Outlook. Добавляем свои поля к Контактам. 2003 vs 2007
От: shmelina  
Дата: 23.04.08 11:45
Оценка:
Есть задача интеграции своей программы с Outlook. Для контактных лиц.
Для этого используется возможность добавления своего поля в карточку контакта Outlook и хранения там кода контакта из своей БД.

Вот примерный кусочек кода который это делает.

var
Outlook, NameSpace, ContactsRoot, OutlookContact, UserProperty: Variant;
begin
Outlook := CreateOleObject('Outlook.Application');
NameSpace := Outlook.GetNameSpace('MAPI');
ContactsRoot := NameSpace.GetDefaultFolder(10);
OutlookContact := ContactsRoot.Items.Add;
OutlookContact.FirstName := IntToStr(Random(1000000));

UserProperty := OutlookContact.UserProperties.Add('code', 3);
UserProperty.Value := -1;

OutlookContact.Save;
Outlook := Unassigned;
end;

Это было давно. Был Outlook 2003.

Все было хорошо, пока не вышел Outlook 2007.
Эта строчка перестала работать и выдает "Incorrect Funtcion"
UserProperty := OutlookContact.UserProperties.Add('code', 3);

Метод тыка позволил выявить следующее.
Оказывается, добавить поле к Контакту (поле контакта) с этим именем уже нельзя, т.к. оно уже существует в загашнике (поля пользователя в папке), т.к. его добавили на другую карточку контакта раньше.
Найти это поле методом UserProperties.Find не получается, т.к. в нем не установлено значение(!).

В общем бред какой-то. Помогите плиз.

Вопрос собственно вот в чем, покажите мне код, который создаст два контакта в Outlook 2007(!), добавит им одинаковое поле и установит в нем значение.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.