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


Макрокоманда ApplyFilter

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

Действие ApplyFilter можно использовать для применения фильтра, запроса или предложения SQL WHERE к таблице, форме или отчету, чтобы ограничить или сортировать записи в таблице или записи из базовой таблицы или запроса формы или отчета. Для отчетов это действие можно использовать только в макросе, указанном свойством события OnOpen отчета.

Примечание.

Это действие можно использовать для применения предложения SQL WHERE только при применении фильтра сервера. Фильтр сервера нельзя применить к источнику записей хранимой процедуры.

Setting

Аргументы действия ApplyFilter приведены ниже.

Аргумент макрокоманды

Описание

Имя фильтра

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

ПРИМЕЧАНИЕ. При использовании этого действия для применения фильтра сервера аргумент Имя фильтра должен быть пустым.

Условие where

Допустимое предложение SQL WHERE (без слова WHERE) или выражение, ограничивающее записи таблицы, формы или отчета.

ПРИМЕЧАНИЕ. В выражении аргумента Where Condition левая часть выражения обычно содержит имя поля из базовой таблицы или запроса для формы или отчета. В правой части выражения обычно содержатся критерии, которые нужно применить к этому полю для ограничения или сортировки записей. Например, критерием может быть имя элемента управления в другой форме, содержащей значение, которое должно соответствовать записям в первой форме. Имя элемента управления должно быть полным, например:

Формы! имя_формы! controlname Имена полей должны быть заключены в двойные кавычки, а строковые литералы должны быть заключены в одинарные кавычки. Максимальная длина аргумента Where Condition составляет 255 символов. Если необходимо ввести более длинное предложение SQL WHERE, используйте метод ApplyFilter объекта DoCmd в модуле Visual Basic для приложений (VBA). В VBA можно ввести инструкции предложения SQL WHERE не более 32 768 символов.

Примечание.

Аргумент Имя фильтра можно использовать, если вы уже определили фильтр, предоставляющий соответствующие данные. Аргумент Where Condition можно использовать для непосредственного ввода условий ограничения. Если вы используете оба аргумента, Microsoft Office Access 2007 применяет предложение WHERE к результатам фильтра. Необходимо использовать один или оба аргумента.

Замечания

Фильтр или запрос можно применить к форме в представлении формы или в режиме таблицы.

Применяемое условие фильтра и WHERE становятся параметром свойства Filter или ServerFilter формы или отчета.

Для таблиц и форм это действие аналогично нажатию кнопки Применить фильтр/сортировку или Применить фильтр сервера в меню Записи . Команда меню применяет последний созданный фильтр к таблице или форме, тогда как действие ApplyFilter применяет указанный фильтр или запрос.

Если в базе данных Access в меню Записи навести указатель на пункт Фильтр, а затем щелкнуть Расширенный фильтр или сортировку после выполнения действия ApplyFilter, в окне Расширенный фильтр/сортировка отображаются критерии фильтра, выбранные с помощью этого действия.

Чтобы удалить фильтр и отобразить все записи для таблицы или формы в базе данных Office Access 2007, можно использовать действие ShowAllRecords или команду Удалить фильтр или сортировку в меню Записи . Чтобы удалить фильтр в проекте Access (ADP), можно вернуться в окно Серверный фильтр по форме и удалить все критерии фильтра, а затем щелкнуть Применить фильтр сервера в меню Записи на панели инструментов или задать для свойства ServerFilterByFormзначение False (0).

При сохранении таблицы или формы Access сохраняет все фильтры, определенные в данный момент в этом объекте, но не будет автоматически применять фильтр при следующем открытии объекта (хотя он автоматически применяет все сортировки, примененные к объекту до его сохранения). Если вы хотите автоматически применить фильтр при первом открытии формы, укажите макрос, содержащий действие ApplyFilter , или процедуру события, содержащую метод ApplyFilter объекта DoCmd в качестве параметра свойства события OnOpen формы. Фильтр также можно применить с помощью действия OpenForm или OpenReport или соответствующих им методов. Чтобы автоматически применить фильтр при первом открытии таблицы, можно открыть таблицу с помощью макроса, содержащего действие OpenTable , за которым сразу же следует действие ApplyFilter .

Пример

В следующем примере показано, как использовать действие ApplyFilter для фильтрации формы frmFoods при ее открытии.

Пример кода изсправочника программиста Microsoft Access 2010.

    OpenForm
        Form Name sfrmFoods
        View Form
        Filter Name
        Where Condition
        Data Mode
        Window Mode Normal
    
    ApplyFilter
        Filter Name
        Where Condition=[display_name] Link "*cheese*"
        Control Name