Outlook不返回约会循环

本文关键字:循环 约会 返回 Outlook | 更新日期: 2023-09-27 18:01:25

我正在试用Outlook 2007的VSTO。
在访问日历中的约会时,我希望看到所有的递归项,而不仅仅是系列主项。

我的代码如下

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年10月的生日是一个反复出现的项目,但她在1950年、1951年的生日都没有出现……等。

我做错了什么?

谢谢你的建议!
Sascha

Outlook不返回约会循环

加一行就行了:

outlookCalendarItems.Sort("[Start]");

当包含日期之间没有'Find'的递归时,此代码有可能成为永久循环。

这是因为它将为它能找到的每个事件创建一个'appointment '。如果存在没有重复结束日期集的重复日历项,则该循环将继续为每次出现(永远)创建'appointment '。

要解决这个问题,你需要限制你找到的结果,参见下面如何限制结果:

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

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