下面的讨论以 Categories 属性为例,但也适用于任何多值字符串属性。

项目的 Categories 属性是一种 关键字 类型的属性,可以包含多个值。 在与筛选器中的比较字符串进行比较时, Categories 属性的行为就如同文本字符串一样,其中的值以逗号和空格进行分隔。 使用 Microsoft Jet 语法或 DAV 搜索和定位 (DASL) 语法的筛选器同样如此。

Jet 查询

在 Jet 查询中,只能对关键字属性进行短语匹配。 不能通过 Jet 查询进行开头或子字符串匹配。 假定有以下 Table.Restrict 条件:

string filter  = "[Categories] = 'Partner'"

此 Jet 查询将返回在其 Categories 属性中找到 Partner 的短语匹配项的项目的行。 此查询将返回分类为 Partner 的项目、分类为 PartnerImportant 的项目以及分类为 Tier1 Partner 的项目的行。 但不会返回仅分类为 Partnership 的项目的行。

DASL 查询

为了克服使用 Jet 查询语法时关键字限制条件的局限性,请使用允许开头或子字符串限制条件的 DASL 语法。 下面的条件字符串将查找包含 Partner 类别、类别中包含 Partner 一词、类别以 Partner 一词开头的所有项目,例如 Partnership 类别:

criteria = "@SQL=" & Chr(34) _ 
& "urn:schemas-microsoft-com:office:office#Keywords" _ 
& Chr(34) & " ci_startswith 'Partner'"

也可以使用 DASL 查询在多值字符串属性中进行等效匹配。 例如,一些项目具有以下四个类别中的一个或多个:

  • My Book

  • Book Review

  • Bookish

    DASL 等效查询:

    criteria = "@SQL=" & Chr(34) _ 
    & "urn:schemas-microsoft-com:office:office#Keywords" & Chr(34) _ 
    & " = 'Book'"
    

    返回所有具有 Book 类别的项目,包括具有多个类别(其中包括 Book 类别)的项目。 该查询不会返回未将 Book 作为类别的项目。

    如果使用按命名空间的引用将多值属性添加到 Table ,则该属性值的格式为变量数组。 若要访问这些值,请分析该数组中的元素。 使用上一示例也可以获取仅包含 Partner 类别的项目。

    支持和反馈

    有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。

  •