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


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

Происходит при применении фильтра к форме.

Синтаксис

expression. ApplyFilter (Cancel, ApplyType)

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

Параметры

Имя Обязательный или необязательный Тип данных Описание
Отмена Обязательный Integer Параметр определяет, возникает ли событие ApplyFilter . Если для аргумента Cancel задано значение True , событие ApplyFilter будет отменено, и фильтр не применяется к форме.
ApplyType Обязательный Integer Возвращает тип примененного фильтра.

Замечания

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

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

  • Убедитесь, что применяемый фильтр правильный. Например, может потребоваться убедиться, что любой фильтр, применяемый к форме Orders, содержит условия, ограничивающие поле OrderDate . Для этого проверьте значение свойства Filter или ServerFilter формы, чтобы убедиться, что этот критерий включен в выражение предложения WHERE.

  • Измените отображение формы перед применением фильтра. Например, при применении определенного фильтра может потребоваться отключить или скрыть некоторые поля, которые не подходят для записей, отображаемых этим фильтром.

  • Отмена или изменение действий, выполняемых при возникновении события Filter . Например, вы можете отключить или скрыть некоторые элементы управления в форме, когда пользователь создает фильтр, так как вы не хотите, чтобы эти элементы управления были включены в критерии фильтра. Затем эти элементы управления можно включить или отобразить после применения фильтра.

Действия в процедуре событий ApplyFilter или макросе выполняются перед применением или удалением фильтра либо после закрытия окна Расширенный фильтр/сортировка, Фильтрация по форме или Серверный фильтр по форме, но до повторного воспроизведения формы. Критерии, введенные во вновь созданном фильтре, доступны для процедуры события ApplyFilter или макроса в качестве параметра свойства Filter или ServerFilter .

Примечание.

Событие ApplyFilter не возникает, когда пользователь выполняет одно из следующих действий:

  • Применяет или удаляет фильтр с помощью действий ApplyFilter, OpenReport или ShowAllRecords в макросе или соответствующих методов объекта DoCmd в Visual Basic.
  • Использует действие Close или метод Close объекта DoCmd для закрытия окна Расширенный фильтр/сортировка, Фильтрация по форме или Фильтр сервера по форме.
  • Задает свойство Filter или ServerFilter , свойство FilterOn или ServerFilterByForm в макросе или Visual Basic (хотя эти свойства можно задать в процедуре события ApplyFilter или макросе).

Пример

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

Чтобы попробовать этот пример, добавьте следующую процедуру события в форму Orders , содержащую элементы управления AmountDue, Tax и TotalDue. Запустите фильтр, который перечисляет только те заказы, за которые были оплачены.

Private Sub Form_ApplyFilter(Cancel As Integer, ApplyType As Integer) 
 If Not IsNull(Me.Filter) And (InStr(Me.Filter, "Orders.Paid = -1")>0 _ 
 Or InStr(Me.Filter, "Orders.Paid = True")>0)Then 
 If ApplyType = acApplyFilter Then 
 Forms!Orders!AmountDue.Visible = False 
 Forms!Orders!Tax.Visible = False 
 Forms!Orders!TotalDue.Visible = False 
 ElseIf ApplyType = acShowAllRecords Then 
 Forms!Orders!AmountDue.Visible = True 
 Forms!Orders!Tax.Visible = True 
 Forms!Orders!TotalDue.Visible = True 
 End If 
 End If 
End Sub

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

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