Form.Filter 事件 (Access)
当用户通过选择“按窗体筛选”、“高级筛选/排序”或“按窗体服务器筛选”打开筛选器窗口时发生。
语法
表达式。Filter (Cancel、 FilterType)
expression:表示 Form 对象的变量。
参数
名称 | 必需/可选 | 数据类型 | 说明 |
---|---|---|---|
Cancel | 必需 | Integer | 该设置确定是否打开筛选窗口。 将 Cancel 参数设置为 True (1) 会阻止打开筛选器窗口。 您还可以使用 CancelEventDoCmd 对象的方法可取消打开筛选窗口。 |
FilterType | 必需 | Integer | 用户尝试打开的筛选窗口。 FilterType 参数可以是以下内部常量之一:
|
备注
若要此事件发生时运行宏或事件过程,请将 OnFilter 属性设为宏的名称或 [事件过程]
使用 Filter 事件可以:
删除所有以前筛选的窗体。 若要执行此操作,将窗体的 Filter 或 ServerFilter 属性设置为零长度字符串 ("") 在 Filter 宏或事件过程。 如果要确保无关的条件不会在新筛选器中显示,这尤其有用。 例如,使用 “按选定内容筛选” 功能时, (窗体) 所选文本中使用的条件将添加到 Filter 或 ServerFilter 属性 WHERE 子句表达式中,并出现在“ 按窗体筛选 ”窗口和“ 高级筛选/排序 ”窗口或“ 按窗体服务器筛选 ”窗口中。 通过使用 筛选器 事件,您可以删除这些旧标准。
输入新筛选器的默认设置。 若要执行此操作,设置 Filter 或 ServerFilter 属性,以包括这些条件。 例如,您可能希望“产品”窗体的所有筛选器仅显示当前产品 (“产品”窗体中未选择“已停用”控件的产品) 。
使用您自己的自定义筛选器窗口而不是一个 Microsoft Access 筛选器窗口。 筛选器 事件发生时,可以打开自定义窗体,并在此窗体上使用的项,以设置 Filter 或 ServerFilter 属性和筛选器的原始表单。 当用户关闭此自定义窗体时,将原始窗体的 FilterOn 或 ServerFilterByForm 属性设置为 True (1) 以应用筛选器。 取消 Filter 事件会阻止“访问筛选器”窗口打开。
防止窗体上的某些控件在“按窗体筛选”或“按窗体服务器筛选”窗口中显示或使用。 如果在 Filter 事件过程或宏中隐藏或禁用控件,则会在“ 按窗体筛选 ”或“按窗体筛选 服务器” 窗口中隐藏或禁用该控件,并且不能用于设置筛选条件。 然后,可以使用 ApplyFilter 事件来显示或启用该控件在应用筛选器之后,或者当从窗体中删除筛选器。
示例
以下示例演示如何在用户尝试创建筛选器时禁用 Orders 窗体上的 TotalDue 控件,以便用户无法对此字段进行筛选。 具有 TotalDue 值且满足其他筛选条件的任何记录将始终显示在筛选的窗体上。 此示例还强制用户使用“按窗体筛选”窗口而不是“高级筛选/排序”窗口。
若要尝试此示例,请将以下事件过程添加到包含 TotalDue 控件的 Orders 窗体。 尝试使用使用 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 支持和反馈,获取有关如何接收支持和提供反馈的指南。