Использование Find для поиска пользовательского свойства в Outlook / Redemption - PullRequest
0 голосов
/ 16 апреля 2019

Я пытаюсь вернуть один элемент календаря из Outlook из нашего приложения на C # для Windows. Он продолжает возвращать эту ошибку: Redemption.RDOItems Ошибка подтверждения: количество полей == 1.

Я использую подобный код в надстройке Outlook, которую я создал, и она отлично работает. Основным отличием является префикс фильтра. В надстройке я использую:

string filterprefix = "[" + OurCustomProperty.OurItemId + "] = '";
var filter1 = filterprefix + parentItem.NeedlesId + "'";

var findItem = folder.Items.Find (filter1);

но этот код не работает из нашего настольного приложения.

Вот код из настольного приложения, которое возвращает ошибку:

Назначение. Идентификатор содержит допустимое значение, которое мы устанавливаем при создании элемента.

string Filterprefix = "@SQL =" + "http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f = '";

RDOSession rdoSession = new RDOSession ();

rdoSession.Logon ("", "", false, false, null, false);

Папка RDOFolderRDO = rdoSession.GetDefaultFolder (rdoDefaultFolders.olFolderCalendar);

var filter1 = filterprefix + meeting.Id + "'";

string ls_find = Filterprefix + meeting.Id + "'";

var findItem = folderRDO.Items.Find (ls_find);

Я пробовал несколько вариантов синтаксиса, но не могу понять, что это правильно. Я также попытался использовать Sort затем Restrict, но и с этим тоже не повезло.

Спасибо, Рик

1 Ответ

0 голосов
/ 16 апреля 2019

RDOItems.Find принимает оператор SQL, пожалуйста, не используйте префикс @SQL= - он специфичен для OOM. Также не забудьте указать в кавычках имя свойства DASL:

"http://schemas.microsoft.com/mapi/string/{00020329-0000-0000-C000-000000000046}/OurCustomProperty.OurItemId/0x0000001f" = '<some value>'
...