Событие Form.Filter (Access)

Происходит, когда пользователь открывает окно фильтра, выбрав Фильтр по форме, Расширенный фильтр/сортировка или Фильтр сервера по форме.

Синтаксис

expression. Filter (Cancel, FilterType)

выражение: переменная, представляющая объект Form.

Параметры

Имя Обязательный или необязательный Тип данных Описание
Отмена Обязательный Integer Параметр определяет, следует ли открывать окно фильтра. Если для аргумента Cancel задано значение True (1), окно фильтра не открывается. Для отмены открытия окна фильтра можно также использовать метод CancelEvent объекта DoCmd .
FilterType Обязательный Integer Окно фильтра, который пользователь пытается открыть. Аргумент FilterType может быть одной из следующих встроенных констант:
  • acFilterByForm
  • acFilterAdvanced
  • acServerFilterByForm

Замечания

Чтобы выполнить макрос или процедуру события при возникновении этого события, задайте для свойства OnFilter имя макроса или [Процедура события].

Используйте событие Filter , чтобы:

  • Удалите все предыдущие фильтры для формы. Для этого задайте для свойства Filter или ServerFilter формы строку нулевой длины (" ") в макросе фильтра или процедуре события. Это особенно полезно, если вы хотите убедиться, что лишние критерии не отображаются в новом фильтре. Например, при использовании функции "Фильтр по выбору " используемые критерии (выделенный текст в форме) добавляются в выражение предложения WHERE свойства Filter или ServerFilter и отображаются как в окне Фильтр по форме , так и в окне Расширенный фильтр/сортировка или в окне Фильтр по форме сервера . Эти старые условия можно удалить с помощью события Filter .

  • Введите параметры по умолчанию для нового фильтра. Для этого задайте свойство Filter или ServerFilter , чтобы включить эти условия. Например, может потребоваться, чтобы все фильтры для формы "Продукты " отображали только текущие продукты (продукты, для которых не выбран элемент управления "Прекращено " в форме "Продукты ").

  • Используйте собственное окно настраиваемого фильтра вместо одного из окон фильтра Microsoft Access. При возникновении события Filter можно открыть собственную настраиваемую форму и использовать записи в этой форме, чтобы задать свойство Filter или ServerFilter и отфильтровать исходную форму. Когда пользователь закрывает эту настраиваемую форму, задайте для свойства FilterOn или ServerFilterByForm исходной формы значение True (1), чтобы применить фильтр. При отмене события Filter окно фильтра доступа не открывается.

  • Запретить появление или использование определенных элементов управления в форме в окне Фильтр по форме или Фильтр по форме сервера . Если вы скрываете или отключаете элемент управления в процедуре события фильтра или макросе, элемент управления скрывается или отключается в окне Фильтр по форме или Серверный фильтр по форме и не может использоваться для задания условий фильтра. Затем можно использовать событие ApplyFilter , чтобы отобразить или включить этот элемент управления после применения фильтра или при удалении фильтра из формы.

Пример

В следующем примере показано, как отключить элемент управления TotalDue в форме Orders , когда пользователь пытается создать фильтр, чтобы пользователь не смог фильтровать по этому полю. Все записи, имеющие значение TotalDue и соответствующие другим условиям фильтра, всегда будут отображаться в отфильтрованной форме. Этот пример также заставляет пользователя использовать окно Фильтр по форме , а не окно Расширенного фильтра или сортировки .

Чтобы попробовать этот пример, добавьте следующую процедуру события в форму Orders , содержащую элемент управления TotalDue . Попробуйте создать фильтр с помощью окна Расширенный фильтр или сортировка , в котором используется элемент управления TotalDue . Кроме того, попробуйте создать тот же фильтр с помощью окна Фильтр по форме .

Private Sub Form_Filter(Cancel As Integer, FilterType As Integer) 
    If FilterType = acFilterByForm Then 
        Forms!Orders!TotalDue.Enabled = False 
    ElseIf FilterType = acFilterAdvanced Then 
        MsgBox "The best way to filter this form is to use the " _ 
            & "Filter By Form command or toolbar button.", vbOKOnly + vbInformation 
        Cancel = True 
    End If 
End Sub

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

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