_Items.Find(String) 方法

定义

查找并返回满足给定 Filter的 Outlook 项目对象。

public:
 System::Object ^ Find(System::String ^ Filter);
public object Find (string Filter);
Public Function Find (Filter As String) As Object

参数

Filter
String

一个字符串,它指定所返回的对象必须满足的条件。

返回

如果调用成功,则表示 Outlook 项的 Object 值;如果失败,则返回 Nothing (null 引用 (Visual Basic) ) 中的 Nothing。

注解

若要在集合中使用 Items 内容索引搜索,请使用 Restrict(String) 方法。 如果Filter包含内容索引关键字,FindRow 将返回错误。 有关内容索引关键字的详细信息,请参阅 使用查询关键字筛选项

方法将返回错误,其中包含以下属性 Filter

BodyCategoriesChildrenClassCompaniesCompanyLastFirstNoSpaceCompanyLastFirstSpaceOnlyContactNamesContactsConversationIndexDLNameEmail1EntryIDEmail2EntryIDEmail3EntryIDEntryIDHTMLBodyIsOnlineMeetingLastFirstAndSuffixLastFirstNoSpaceAutoResolvedWinnerBodyFormatInternetCodePagePermissionLastFirstNoSpaceCompanyLastFirstSpaceOnlyLastFirstSpaceOnlyCompanyLastFirstNoSpaceAndSuffixMemberCountNetMeetingAliasNetMeetingAutoStartNetMeetingOrganizerAliasNetMeetingServerNetMeetingTypeRecurrenceStateReplyRecipientsReceivedByEntryIDRecevedOnBehalfOfEntryIDResponseStateSavedSentSubmittedVotingOptionsDownloadStateIsConflictMeetingWorkspaceURL

创建 Find 方法和 Restrict 方法的筛选器

根据要筛选的字段类型,筛选器的语法将有所不同。

字符串(适用于文本字段)

搜索 文本 字段时,可以使用单引号 (') 或双引号 ("") 来分隔作为筛选器一部分的值。 例如,当字段类型为 C#) 中的 字符串 (字符串 时,以下所有行都正常运行:

sFilter = “[CompanyName] = 'Microsoft'”

sFilter = “[CompanyName] = ”“Microsoft”“”

sFilter = “[CompanyName] = ” & Chr (34) & “Microsoft” & Chr (34)

在 Jet 或 DASL 查询中指定筛选器的过程中,如果使用一对单引号来分隔构成筛选器的字符串,而且该字符串包含另一个单引号或撇号,则应在这个单引号或撇号前面添加一个单引号以用作转义符。 如果使用一对双引号来分隔字符串,则也可使用类似方法。 如果该字符串包含一个双引号,则应在该双引号前面添加一个双引号以用作转义符。

例如,在筛选 Subject 属性等于单词的 DASL 筛选器字符串中,整个筛选器字符串由一对双引号分隔,而嵌入的字符串不能由一对单引号分隔。 此筛选器字符串中有三个字符需要转义:起始双引号和结束双引号用于 的属性引用 http://schemas.microsoft.com/mapi/proptag/0x0037001f,以及单词的值条件中的撇号不能。 通过应用适当的转义符,您可将筛选器字符串表示如下:

filter = “@SQL=”“http://schemas.microsoft.com/mapi/proptag/0x0037001f” = 'can't'”

或者,也可使用 chr(34) 函数来代表用作转义符的双引号(其 ASCII 字符值为 34)。 通过使用 chr(34) 代替双引号转义符,您可将上一个示例表示如下:

filter = “@SQL= ” & Chr (34) & “http://schemas.microsoft.com/mapi/proptag/0x0037001f” _

& Chr (34) & “ = ” & “'can't'”

对于使用 ci_startswithci_phrasematch 运算符的 DASL 查询而言,转义单引号和双引号字符也是必需的。 例如,以下查询可在邮件主题中执行针对 can't 的短语匹配查询:

filter = “@SQL=” & Chr (34) &“http://schemas.microsoft.com/mapi/proptag/0x0037001E” _

& Chr (34) & “ci_phrasematch” & “'不能'

另一个示例是一个 DASL 筛选器字符串,该字符串筛选 Subject 属性是否等于单词“正确内容”,其中“内容”一词用双引号括起来。 在此情况下,必须通过以下方式对括起的双引号进行转义:

filter = “@SQL=”“http://schemas.microsoft.com/mapi/proptag/0x0037001f” = 'right “”stuff“'”

对于包含空格、单引号、双引号或百分号字符的命名属性,对这些属性的引用将应用一组不同的转义规则。 有关更多信息,请参阅按命名空间引用属性。

日期

尽管日期和时间通常以 Date 格式存储,但 Find 和 Restrict 方法要求将日期和时间转换为字符串表示形式。 为确保日期的格式满足 Microsoft Outlook 的要求,请使用 Format 函数。 以下示例创建了筛选器以查找所有在 1999 年 1 月 15 日下午 3:30 以后修改过的联系人。

sFilter = “[LastModificationTime] > '” & Format (“1/15/99 3:30pm”, “dddd h:nn AMPM”) & “'”

布尔运算符

Boolean 运算符、TRUE/FALSE、YES/NO 和 ON/OFF 等都不应转换为字符串。 例如,要确定是否已为联系人启用日记,可使用以下筛选器:

sFilter = “[日记] = True”

注意:如果将引号用作布尔字段的分隔符,则空字符串将查找字段为 False 的项目,所有非空字符串将查找其字段为 True 的项目。

关键字(或类别)

“类别”字段属于关键字类型,用于保存多个值。 如果以编程方式进行访问,类别字段的行为类似文本字段,且字符串必须完全匹配。 文本字符串中的值将通过逗号和空格分隔。 这通常意味着,当关键字字段包含多个值时,不能使用 Find 和 Restrict 方法对关键字字段进行操作。 例如,如果“商务”类别和“商务和社会”类别中各包含一个联系人,则无法轻松使用 Find 和 Restrict 方法检索“商务”类别中的所有项目。 但可循环遍历文件夹中的所有联系人,并使用 Instr 函数测试字符串“商务”是否包含在整个关键字字段中。

注意:一个可能的例外是,如果将“类别”字段限制为两个,或者值数较少。 然后,可以将 Find 和 Restrict 方法与 OR 逻辑运算符结合使用来检索所有 Business 联系人。 例如(在伪代码中):“商务” OR “商务, 个人” OR “个人, 商务”。 类别字符串不区分大小写。

整数

可以搜索带或不带引号的整数字段作为分隔符。 以下筛选器将查找使用 Outlook 2000 创建的联系人:

sFilter = “[OutlookInternalVersion] = 92711”

sFilter = “[OutlookInternalVersion] = '92711'”

使用变量作为筛选器的一部分

如 Restrict 方法示例所示,可以使用变量中的值作为筛选器的一部分。 以下 Microsoft Visual Basic 代码示例演示了使用变量作为筛选器一部分的语法。

sFullName = “Dan Wilson”

此方法使用 Chr (34) 分隔值:sFilter = “[FullName] = ” & Chr (34) & sFullName & Chr (34)

此方法使用双引号分隔值:sFilter = “[FullName] = ”“” & sFullName &“””

使用逻辑运算符作为筛选器的一部分

可以使用的逻辑运算符为 AND、OR 和 NOT。 下面是 Restrict 方法的 子句变体,因此可以指定多个条件。

OR:以下代码返回所有类别为“商务”或“个人”的联系人项目。

sFilter = “[Categories] = 'Personal' or [Categories] = 'Business'”

AND:以下代码检索所有工作单位为 Microsoft 的私人联系人。

sFilter = “[Categories] = 'Personal' and [CompanyName] = 'Microsoft'”

NOT:以下代码检索所有工作单位不是 Microsoft 的私人联系人。

sFilter = “[Categories] = 'Personal' and Not ([CompanyName] = 'Microsoft') ”

其他注意事项

如果尝试将 Find 或 Restrict 方法与用户定义的字段一起使用,则必须在 文件夹中定义字段,否则将发生错误。 无法执行“包含”操作。 例如,不能使用 Find 和 Restrict 搜索“主题”字段中包含特定字词的项目。 而应使用 AdvancedSearch 方法,或循环遍历文件夹中的所有项目并使用 InStr 函数在字段内执行搜索操作。 可以使用 Restrict 方法搜索以特定范围内的字符开始的项目。 例如,若要搜索姓氏以字母 M 开头的所有联系人,请使用以下筛选器:

sFilter = “[LastName] > 'LZZZ' and [LastName] < 'N'”

适用于