Outlook не возвращает повторения встреч
Я играю с 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 годах... и т. Д.
Что я делаю неправильно?
Спасибо за идеи!
Sascha
2 ответа
Добавление одной строки сделало это:
outlookCalendarItems.Sort("[Start]");
При включении повторений без "Поиск" между датами этот код может стать вечным циклом.
Это связано с тем, что для каждого вхождения, которое он может найти, будет создан 'destinationItem'. Если есть повторяющиеся элементы календаря, для которых не задана дата окончания повторения, этот цикл будет продолжать создавать 'назначение элемента для каждого вхождения (навсегда).
Чтобы обойти это, вам нужно ограничить результаты, которые вы найдете, см. Ниже, как ограничить результаты.:
http://msdn.microsoft.com/en-us/library/office/dd469461(v=office.12).aspx
Set currentAppointment = myAppointments.Find("[Start] >= """ & _
tdystart & """ and [Start] <= """ & tdyend & """")