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 и обратная связь.