Share via


使用關鍵字屬性比較篩選項目

下列討論以 Categories 屬性做為範例,但也適用於任何多重值字串屬性。

項目的 Categories 屬性的類型為 keywords,可包含多個值。 在與篩選中的比較字串相比較時,Categories 屬性的表現就如同以逗點及空格將值分隔的文字字串。 使用 Microsoft Jet 語法或 DAV 搜尋及尋找 (DASL) 語法的篩選,也都是如此。

Jet 查詢

在 Jet 查詢中,您只能對關鍵字屬性執行片語比對。 您無法執行與 Jet 查詢的 starts-with 或 substring 比對。 請考慮 Table.Restrict的下列準則:

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

此 Jet 查詢會針對 Categories 屬性中符合 Partner 片語比對的項目,來傳回該項目的列。 它會傳回分類為 Partner 的項目列、分類為 PartnerImportant 的項目列,以及分類為 Tier1 Partner 的項目列。 這項查詢不會傳回分類為 Partnership 的項目列。

DASL 查詢

若要克服使用 Jet 查詢語法的關鍵字限制,請使用 DASL 語法,因為它允許 starts-with 或子字串限制。 下列準則字串會尋找含有 Partner 做為類別、做為類別中的字詞,以及做為類別中字詞開頭 (例如 Partnership 類別) 的所有項目:

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

您也可以使用 DASL 查詢,在多重值字串屬性中進行全等比對。 請考量項目包含下列四種類別之一或更多的範例:

  • Book

  • My Book

  • Book Review

  • Bookish

DASL 全等查詢:

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

會傳回類別有 Book 的項目,包括分類成多種類別,而且 Book 是其中一種類別的項目。 查詢不會傳回沒有 Book 做為類別的專案。

如果多重值屬性使用命名空間參照新增至 Table ,則屬性值的格式會是 Variant 陣列。 若要存取這些值,請剖析陣列元素。 就上一個範例而言,您也可以取得僅包含 Partner 類別的項目。

支援和意見反應

有關於 Office VBA 或這份文件的問題或意見反應嗎? 如需取得支援服務並提供意見反應的相關指導,請參閱 Office VBA 支援與意見反應