Действие ApplyFilter можно использовать для применения фильтра, запроса или предложения SQL WHERE к таблице, форме или отчету, чтобы ограничить или сортировать записи в таблице или записи из базовой таблицы или запроса формы или отчета. Для отчетов это действие можно использовать только в макросе, указанном свойством события OnOpen отчета.
Примечание
Применить предложение SQL WHERE с помощью этого действия можно только при использовании серверного фильтра. Серверный фильтр нельзя применить к источнику записей хранимой процедуры.
Примечание
Макрокоманда "ПрименитьФильтр" недоступна в веб-приложениях Access.
Настройка
Аргументы макрокоманды ПрименитьФильтр описаны ниже.
| Аргумент макрокоманды | Описание |
|---|---|
| Имя фильтра | Имя фильтра или запроса, используемого для отбора или сортировки записей в таблице, форме или отчете. В поле Имя фильтра в разделе Аргументы макрокоманды области "Конструктор макросов" можно указать имя существующего запроса либо фильтра, сохраненного в качестве запроса. Примечание: При использовании этого действия для применения фильтра сервера аргумент Имя фильтра должен быть пустым. |
| Условие отбора | Допустимое предложение SQL WHERE (без слова WHERE) или выражение, ограничивающее записи таблицы, формы или отчета. Примечание: В выражении аргумента Where Condition левая часть выражения обычно содержит имя поля из базовой таблицы или запроса для формы или отчета. В правой части выражения обычно содержатся критерии, которые нужно применить к этому полю для ограничения или сортировки записей. Например, критерием может быть имя элемента управления в другой форме, содержащей значение, которое должно соответствовать записям в первой форме. Имя элемента управления должно быть полным, например:Forms! имя_формы! controlname Имена полей заключаются в двойные кавычки, а строковые литералы — в одинарные. Максимальная длина аргумента условия Where составляет 255 знаков. Если нужно указать более длинное предложение SQL WHERE, используйте метод ПрименитьФильтр объекта DoCmd из модуля Visual Basic для приложений (VBA). Длина предложений SQL WHERE в VBA может составлять до 32 768 знаков. |
Примечание
Аргумент Имя фильтра можно использовать, если уже определен фильтр, содержащий соответствующие данные. С помощью аргумента условия Where можно непосредственно задать ограничительное условие. Если вы используете оба аргумента, Access применяет предложение WHERE к результатам фильтра. Необходимо использовать один или оба этих аргумента.
Замечания
Фильтр или запрос можно применить к форме в представлении формы или в режиме таблицы.
Применяемые фильтр и условие WHERE становятся значением свойства Фильтр или ServerFilter формы или отчета.
При работе с таблицами и формами выполнение этой макрокоманды аналогично выбору команды Применить фильтр/Отсортировать или Применить серверный фильтр в меню Записи. Команда меню применяет последний созданный фильтр к таблице или форме, в то время как макрокоманда ПрименитьФильтр применяет указанный фильтр или запрос.
Если в базе данных Access в меню Записи навести указатель на пункт Фильтр, а затем щелкнуть Расширенный фильтр или сортировку после выполнения действия ApplyFilter, в окне Расширенный фильтр/сортировка отображаются критерии фильтра, выбранные с помощью этого действия.
Чтобы удалить фильтр и отобразить все записи для таблицы или формы в базе данных Access, можно использовать действие ShowAllRecords или команду Удалить фильтр или сортировку в меню Записи . Чтобы удалить фильтр в проекте Access (ADP), можно вернуться в окно Серверный фильтр по форме и удалить все критерии фильтра, а затем щелкнуть Применить фильтр сервера в меню Записи на панели инструментов или задать для свойства ServerFilterByFormзначение False (0).
При сохранении таблицы или формы Access сохраняет фильтр, заданный в соответствующем объекте в данный момент, однако не применяет его автоматически в следующий раз при открытии этого объекта (при этом автоматически применяются условия сортировки, которые были применены к объекту на момент его сохранения). Чтобы автоматически применять фильтр при первом открытии формы, задайте макрос с макрокомандой ПрименитьФильтр или процедуру события, содержащую метод ПрименитьФильтр объекта DoCmd в качестве значения свойства события OnOpen формы. Применить фильтр также можно с помощью макрокоманд ОткрытьФорму и ОткрытьОтчет или их соответствующих методов. Чтобы автоматически применять фильтр при первом открытии таблицы, ее можно открывать с помощью макроса, содержащего макрокоманду ОткрытьТаблицу, за которой сразу следует макрокоманда ПрименитьФильтр.
Пример
Применение фильтра с помощью макроса
Следующий макрос содержит набор действий, каждое из которых фильтрует записи для формы Списка телефонов клиента. Здесь показано использование действий ApplyFilter, ShowAllRecords и GoToControl . Здесь также показано использование условий для определения того, какая кнопка переключения в группе параметров была выбрана в форме. Каждая строка действия связана с переключателем, который выбирает набор записей, начиная с A, B, C и т. д., или всех записей. Этот макрос должен быть присоединен к событию AfterUpdate группы параметров CompanyNameFilter.
| Условие | Действие | Аргументы: параметр | Примечания |
|---|---|---|---|
| [CompanyNameFilters]=1 | ПрименитьФильтр | Условие Where: [CompanyName] Like "[AÀÁÂÃÄ]*" | Фильтрация названий компании, которые начинаются с буквы A, À, Á, Â, Ã или Ä. |
| [CompanyNameFilters]=2 | ПрименитьФильтр | Условие Where: [CompanyName] Like "B*" | Фильтрация названий компании, которые начинаются с буквы B. |
| [CompanyNameFilters]=3 | ПрименитьФильтр | Условие Where: [CompanyName] Like "[CÇ]*" | Фильтрация названий компании, которые начинаются с буквы C или Ç. |
| ... Строки действий с D по Y задаются в том же формате, что и строки с A по C... | |||
| [CompanyNameFilters]=26 | ПрименитьФильтр | Условие Where: [CompanyName] Like "[ZÆØÅ]*" | Фильтрация названий компании, которые начинаются с буквы Z, Æ, Ø или Å. |
| [CompanyNameFilters]=27 | ПоказатьВсеЗаписи | Показать все записи. | |
| [RecordsetClone]. [RecordCount]>0 | КЭлементуУправления | Имя элемента: CompanyName | Если для выбранной буквы возвращаются записи, перевести фокус на элемент управления CompanyName. |