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


Свойство Filter (ADO)

Область применения: Access 2013, Office 2013

Указывает фильтр для данных в наборе записей.

Параметры и возвращаемые значения

Задает или возвращает значение Variant , которое может содержать одно из следующих значений:

  • Строка условий — строка, составленная из одного или нескольких отдельных предложений, объединенных операторами AND или OR .

  • Массив закладок — массив уникальных значений закладок, указывающих на записи в объекте Recordset .

  • Значение FilterGroupEnum .

Замечания

Используйте свойство Filter для выборочного отображения записей в объекте Recordset . Отфильтрованный набор записей становится текущим курсором. Затрагиваются другие свойства, возвращающие значения на основе текущего курсора, например AbsolutePosition, AbsolutePage, RecordCount и PageCount. Это связано с тем, что задание свойства Filter определенного значения приведет к перемещению текущей записи в первую запись, удовлетворяющую новому значению.

Строка условия состоит из предложений в формате FieldName-Operator-Value (например, LastName = 'Smith'). Составные предложения можно создавать путем объединения отдельных предложений с and (например, LastName = "Smith" AND FirstName = "John") или OR (например, ). Составные предложения можно создавать путем объединения отдельных предложений с помощью and (например, LastName = 'Smith' AND FirstName = 'John') или OR (например, LastName = 'Smith' OR LastName = 'Jones'). Используйте следующие рекомендации для строк условий.

  • FieldName должно быть допустимым именем поля из набора записей. Если имя поля содержит пробелы, необходимо заключить имя в квадратные скобки.

  • Оператор должен иметь один из следующих значений: <, >, <=, >=, <>, =или LIKE.

  • Value — это значение, с которым вы будете сравнивать значения полей (например, "Smith", #8/24/95#, 12,345 или 50,00 долл. США). Используйте одинарные кавычки со строками и знаками фунта (#) с датами. Для чисел можно использовать десятичные знаки, знаки доллара и научные нотации. Если оператор имеет значение LIKE, значение может использовать подстановочные знаки. Допускаются только подстановочные знаки звездочки (*) и знака процента (%) и они должны быть последним символом в строке. Значение не может иметь значение NULL.

    Примечание.

    Чтобы включить одинарные кавычки (') в значение фильтра, используйте две одинарные кавычки, которые представляют одну. Например, для фильтрации по О'Мэлли строка условий должна иметь значение "col1 = 'O''Malley'". Чтобы включить одинарные кавычки как в начале, так и в конце значения фильтра, заключите строку знаками фунта (#). Например, для фильтрации по "1", строка условия должна быть "col1 = #'1'#".

  • Приоритет между AND и OR отсутствует. Предложения можно группировать в круглые скобки. Однако нельзя группировать предложения, присоединенные с помощью OR , а затем присоединить группу к другому предложению с помощью И, как показано в следующем фрагменте кода:
    (LastName = 'Smith' OR LastName = 'Jones') AND FirstName = 'John'

  • Вместо этого вы создайте этот фильтр как
    (LastName = 'Smith' AND FirstName = 'John') OR (LastName = 'Jones' AND FirstName = 'John')

  • В предложении LIKE можно использовать подстановочный знак в начале и конце шаблона (например, LastName Like '*mit*') или только в конце шаблона (например, LastName Like 'Smit*').

Константы фильтра упрощают разрешение конфликтов отдельных записей в режиме пакетного обновления, позволяя просматривать, например, только те записи, которые были затронуты во время последнего вызова метода UpdateBatch .

Установка самого свойства Filter может завершиться ошибкой из-за конфликта с базовыми данными (например, запись уже удалена другим пользователем). В этом случае поставщик возвращает предупреждения в коллекцию Ошибок , но не останавливает выполнение программы. Ошибка во время выполнения возникает только при наличии конфликтов во всех запрошенных записях. Используйте свойство Status для поиска записей с конфликтами.

Установка для свойства Filter значения строки нулевой длины ("") имеет тот же эффект, что и использование константы adFilterNone .

Каждый раз, когда задано свойство Filter , текущая позиция записи перемещается к первой записи в отфильтрованном подмножестве записей в наборе записей. Аналогичным образом при очистке свойства Filter текущая позиция записи перемещается к первой записи в наборе записей.

Описание значений закладок, на основе которых можно создать массив для использования со свойством Filter, см. в свойстве Bookmark.

Только фильтры в виде строк условия (например, OrderDate > '12/31/1999') влияют на содержимое сохраненного набора записей. Фильтры, созданные с массивом закладок или с использованием значения из FilterGroupEnum , не влияют на содержимое сохраненного набора записей. Эти правила применяются к наборам записей, созданным с помощью клиентских или серверных курсоров.

Примечание.

При применении флага adFilterPendingRecords к отфильтрованным и измененным recordset в режиме пакетного обновления результирующий набор записей будет пустым, если фильтрация была основана на ключевом поле таблицы с одним ключом и изменения были внесены в значения ключевых полей. Результирующий набор записей будет пустым, если выполняется одно из следующих значений:

  • Фильтрация была основана на неключевых полях в таблице с одним ключом.
  • Фильтрация была основана на любых полях в таблице с несколькими ключами.
  • Изменения были внесены в неключевых полях в таблице с одним ключом.
  • Изменения были внесены в любые поля в таблице с несколькими ключами.

В следующей таблице перечислены эффекты adFilterPendingRecordingRecords в различных сочетаниях фильтрации и изменений. В левом столбце показаны возможные изменения; Изменения могут быть внесены в любое из полей, не связанных с ключами, в поле ключа в таблице с одним ключом или в любом из ключевых полей в таблице с несколькими ключами. В верхней строке отображается условие фильтрации; Фильтрация может основываться на любом из неключевых полей, ключевого поля в таблице с одним ключом или любого из ключевых полей в таблице с несколькими ключами. В пересекающихся ячейках отображаются результаты: + означает, что применение adFilterPendingRecords приводит к созданию непустого набора записей; - означает пустой набор записей.


Не ключи

Один ключ

Несколько ключей

Не ключи

+

+

+

Один ключ

+

-

Н/Д

Несколько ключей

+

Н/Д

+