Поделиться через


Filtering Items Using a Comparison with a Keywords Property

В следующем обсуждении в качестве примера используется свойство Categories , но может применяться и к любому строковому свойству с несколькими значениями.

Свойство Categories элемента имеет ключевые слова типа, которые могут содержать несколько значений. При сравнении со строкой сравнения в фильтре свойство Categories ведет себя как текстовая строка, где значения разделяются запятой и пробелом. Это справедливо для фильтров, использующих синтаксис Microsoft Jet или синтаксис поиска и поиска DAV (DASL).

Запросы Jet

В запросе Jet можно выполнять сопоставление фраз только для свойства ключевых слов. Невозможно выполнить сопоставление запусков с или подстроки с запросом Jet. Рассмотрим следующие критерии для Table.Restrict:

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

Этот запрос Jet возвращает строки для элементов, в которых свойство Categories элемента находит фразу-совпадение для партнера. Он вернет строки для элементов, которые классифицируются как Partner, для элементов, которые классифицируются как Partner и Important, а также для элементов, которые классифицируются как Партнер уровня 1. Он не будет возвращать строки для элементов, которые классифицируются только как Партнерство.

Запросы DASL

Чтобы преодолеть ограничения ключевых слов с помощью синтаксиса запросов Jet, используйте синтаксис DASL, который позволяет использовать ограничения для запуска с или подстроки. В следующей строке условий будут находиться все элементы, содержащие Партнер как категорию, как одно из слов в категории и как начальную часть слова в категории, например категорию Партнерство:

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

Вы также можете использовать запрос DASL для сопоставления эквивалентности в строковом свойстве с несколькими значениями. Рассмотрим пример, когда элементы имеют одну или несколько из следующих четырех категорий:

  • Книга

  • Моя книга

  • Рецензирование книги

  • Книжный

Запрос эквивалентности DASL:

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

возвращает любой элемент, имеющий в качестве категории Book , включая элементы, классифицированные с несколькими категориями, где Book является одной из категорий. Запрос не возвращает элементы, у которых нет категории Book .

Если многозначное свойство добавляется в таблицу с помощью ссылки по пространству имен, формат значений свойства представляет собой массив variant. Чтобы получить доступ к этим значениям, выполните синтаксический анализ элементов в массиве. В последнем примере это также позволит получить элементы, содержащие именно Partner в качестве категории.

Поддержка и обратная связь

Есть вопросы или отзывы, касающиеся Office VBA или этой статьи? Руководство по другим способам получения поддержки и отправки отзывов см. в статье Поддержка Office VBA и обратная связь.