Form.ApplyFilter 事件 (Access)
对窗体应用筛选器时发生。
语法
表达式。ApplyFilter (Cancel、 ApplyType)
expression:表示 Form 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Cancel | 必需 | Integer | 该设置确定是否发生 ApplyFilter 事件。 将 Cancel 参数设置为 True 可取消 ApplyFilter 事件,并且筛选器不会应用到窗体。 |
ApplyType | 必需 | Integer | 返回所应用的筛选器类型。 |
备注
若要在此事件发生时运行宏或事件过程,请将 OnApplyFilter 属性设置为宏名或 [事件过程]。
使用 ApplyFilter 事件可以:
确保正在应用的筛选器正确。 例如,你可能希望确保应用于 “订单” 窗体的任何筛选器都包含限制 “OrderDate” 字段的条件。 为此,请检查窗体的 Filter 或 ServerFilter 属性值,以确保 WHERE 子句表达式中包含此条件。
在应用筛选器之前更改窗体的显示。 例如,应用某个特定筛选器时,可能需要禁用或隐藏一些不适用于该筛选器显示的记录的字段。
撤消或更改在 Filter 事件发生时执行的操作。 例如,当用户创建筛选器时,可以禁用或隐藏窗体上的某些控件,因为你不希望这些控件包含在筛选条件中。 之后,可以在应用筛选器之后启用或显示这些控件。
ApplyFilter 事件过程或宏中的操作发生在应用或删除筛选器之前,或者在“高级筛选/排序、按窗体筛选或服务器按窗体筛选”窗口关闭之后,但在重新显示窗体之前发生。 在新建的筛选器中输入的条件可用于 ApplyFilter 事件过程或宏作为 Filter 或 ServerFilter 属性的设置。
注意
当用户执行下列操作之一时,ApplyFilter 事件不会发生:
- 通过使用宏中的 ApplyFilter、OpenReport 或 ShowAllRecords 操作或 Visual Basic 中 DoCmd 对象的相应方法来应用或删除筛选器。
- 使用 DoCmd 对象的 Close 操作或 Close 方法关闭“高级筛选/排序”、“按窗体筛选”或“按窗体服务器筛选”窗口。
- 在宏或 Visual Basic (设置 Filter 或 ServerFilter 属性、 FilterOn 或 ServerFilterByForm 属性,尽管可以在 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。