Outlook не возвращает повторения встреч - PullRequest
1 голос
/ 05 июля 2011

Я играю с VSTO для Outlook 2007.
При доступе к встречам в календаре я хотел бы видеть все повторения - не только основной элемент серии.

Мой кодследующий

var calendarFolder = Globals.TestAddin.Application.GetNamespace("MAPI").GetDefaultFolder(OlDefaultFolders.olFolderCalendar);
var outlookCalendarItems = calendarFolder.Items;
outlookCalendarItems.IncludeRecurrences = includeRecurring;

var appointmentItems = outlookCalendarItems.Cast<AppointmentItem>();
foreach ( var appointmentItem in appointmentItems )
{
  var item = appointmentItem;
  this.LogBox.AppendText(item.Subject);
}

Показывает все обычные предметы, все предметы серии-мастера, но не рассчитанные встречи серии.
Пример: он показывает день рождения моей матери в октябре 1949 года как повторяющийся предмет, но ни один из ее следующихдни рождения в 1950, 1951 ... и т. д.

Что я делаю не так?

Спасибо за идеи!
Саша

Ответы [ 2 ]

2 голосов
/ 19 июля 2011

Добавление одной строки сделало это:

outlookCalendarItems.Sort("[Start]");
0 голосов
/ 07 марта 2014

При включении повторений без «Поиск» между датами этот код может стать вечным циклом.

Это связано с тем, что для каждого вхождения, которое он может найти, будет создан 'destinationItem'.Если есть повторяющиеся элементы календаря, для которых не задана дата окончания повторения, этот цикл будет продолжать создавать 'assignItem's для каждого вхождения (навсегда).

Чтобы обойти это, вам нужно ограничить найденные результаты, см.ниже, как ограничить результаты .:

http://msdn.microsoft.com/en-us/library/office/dd469461(v=office.12).aspx

Set currentAppointment = myAppointments.Find("[Start] >= """ & _
        tdystart & """ and [Start] <= """ & tdyend & """")
...