Form.ApplyFilter 事件 (Access)

对窗体应用筛选器时发生。

语法

表达式ApplyFilter (CancelApplyType)

expression:表示 Form 对象的变量。

参数

名称 必需/可选 数据类型 说明
Cancel 必需 Integer 该设置确定是否发生 ApplyFilter 事件。 将 Cancel 参数设置为 True 可取消 ApplyFilter 事件,并且筛选器不会应用到窗体。
ApplyType 必需 Integer 返回所应用的筛选器类型。

备注

若要在此事件发生时运行宏或事件过程,请将 OnApplyFilter 属性设置为宏名或 [事件过程]。

使用 ApplyFilter 事件可以:

  • 确保正在应用的筛选器正确。 例如,你可能希望确保应用于 “订单” 窗体的任何筛选器都包含限制 “OrderDate” 字段的条件。 为此,请检查窗体的 FilterServerFilter 属性值,以确保 WHERE 子句表达式中包含此条件。

  • 在应用筛选器之前更改窗体的显示。 例如,应用某个特定筛选器时,可能需要禁用或隐藏一些不适用于该筛选器显示的记录的字段。

  • 撤消或更改在 Filter 事件发生时执行的操作。 例如,当用户创建筛选器时,可以禁用或隐藏窗体上的某些控件,因为你不希望这些控件包含在筛选条件中。 之后,可以在应用筛选器之后启用或显示这些控件。

ApplyFilter 事件过程或宏中的操作发生在应用或删除筛选器之前,或者在“高级筛选/排序、按窗体筛选或服务器按窗体筛选”窗口关闭之后,但在重新显示窗体之前发生。 在新建的筛选器中输入的条件可用于 ApplyFilter 事件过程或宏作为 FilterServerFilter 属性的设置。

注意

当用户执行下列操作之一时,ApplyFilter 事件不会发生:

  • 通过使用宏中的 ApplyFilter、OpenReport 或 ShowAllRecords 操作或 Visual Basic 中 DoCmd 对象的相应方法来应用或删除筛选器。
  • 使用 DoCmd 对象的 Close 操作或 Close 方法关闭“高级筛选/排序”、“按窗体筛选”或“按窗体服务器筛选”窗口。
  • 在宏或 Visual Basic (设置 FilterServerFilter 属性、 FilterOnServerFilterByForm 属性,尽管可以在 ApplyFilter 事件过程或宏) 中设置这些属性。

示例

以下示例显示当应用的筛选器将记录限制为仅支付的订单时,如何隐藏 “订单 ”窗体上的 AmountDue、Tax 和 TotalDue 控件。

若要尝试此示例,请将以下事件过程添加到包含 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。