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
加一行就行了:
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 & """")