尝试找出如何为restrict方法创建正确的过滤器。我试图仅显示特定用户的日历约会。到目前为止,我已经得到了它显示日期过滤器的所有约会,但理想情况下只需要过滤组织者。我已经尝试过类似RestrictString := ('[requiredAttendees] = 'Joe Bloggs');
的东西,但它不起作用。
下面是我列出所有约会和显示约会组织者(所需的与会者),以及主题和开始时间等的代码。但是我想只对一个特定的人这样做。
Namespace := Outlook.GetNamespace('MAPI'); // represents a NameSpace object.
Recipient := Namespace.CreateRecipient('shared@mailbox.com');
Recipient.Resolve;
Folder := Namespace.GetSharedDefaultFolder(Recipient, olFolderCalendar);
Items := Folder.Items;
Items.Sort('[Start]', true);
Items.IncludeRecurrences := true;
RestrictString :=
'@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" like ''%joe bloggs%''';
RestrItems := Items.Restrict(RestrictString);
Memo1.clear;
if (RestrItems.count = 0) then Memo1.lines.add('No appointments');
for i := 1 to RestrItems.count do
begin
Appointment := Items.Item(i);
Memo1.lines.add(' ');
Memo1.lines.add(Appointment.requiredAttendees);
Memo1.lines.add(Appointment.subject);
Memo1.lines.add(Appointment.Start);
Memo1.lines.add(Appointment.End);
Memo1.lines.add(' ');
end;
Outlook := UnAssigned;
任何指示最感激。我已经看了各种各样的问题和文档,但还没有完全掌握它。
Outlook对象模型中的Restrict
/Find
方法不会对收件人(或附件)创建子限制。您可以在扩展MAPI (c++或Delphi)中这样做,但不能在Outlook对象模型中这样做。
您可以在OOM中做的最好的是搜索PR_DISPLAY_TO
Extended MAPI属性(如果您单击IMessage按钮,您可以在OutlookSpy中看到它)。它对应于OOM中的To
属性,并使用";保存项目时,分隔显示收件人的名称。它可能包括,也可能不包括电子邮件地址。下面的查询应该适用于您的Items.Restrict
@SQL="http://schemas.microsoft.com/mapi/proptag/0x0E04001F" like '%Joe Bloggs%'
如果使用Redemption(我是它的作者)是一个选项,它是RDOItems的版本。Restrict
/Find
对收件人姓名/地址/SMTP地址创建子限制(可以在SQL查询中指定To
、CC
、BCC
或Recipients
)。