ApplyFilter 事件

expandtri全部显示

ApplyFilter 事件在 Microsoft Access 项目 (.adp) 或 Access 数据库 (.mdb) 中都可以发生。

在 Access 数据库中,用户执行下列操作之一时,ApplyFilter 事件将发生:

?“窗体”视图中单击“记录”菜单上的“应用筛选/排序”;在“筛选”窗口中单击“筛选”菜单上的“应用筛选/排序”;或单击工具栏上的“应用筛选”按钮图像。这会应用最近创建的筛选(使用“按窗体筛选”功能或“高级筛选/排序”窗口创建)。

 

?在“窗体”视图的“记录”菜单上,指向“筛选”,然后单击“按选定内容筛选”,或单击工具栏上的“按选定内容筛选”按钮图像。这会基于窗体中当前选定的内容应用筛选。

 

?在“窗体”视图中的“记录”菜单上,指向“筛选”,然后单击“内容排除筛选”。这样可在窗体的当前选定内容以外应用筛选。

 

?在“窗体”视图中单击“记录”菜单上的“取消筛选/排序”,或单击工具栏上的“取消筛选”按钮图像,即可取消当前应用于窗体的所有筛选(或排序)。

注释  用户取消筛选时,子窗体上不会发生 ApplyFilter 事件。在这种情况下,ApplyFilter 事件会在父窗体上发生。

 

 

?当一个绑定控件获得焦点时,在快捷菜单上单击“按选定内容筛选”、“内容排除筛选”或“取消筛选/排序”,或者在“筛选目标”框中输入一个值或表达式

 

?关闭“高级筛选/排序”窗口或“按窗体筛选”窗口。

 

?当“按窗体筛选”窗口打开时,单击“筛选”菜单上的“高级筛选/排序”,或者当“高级筛选/排序”窗口打开时,单击“筛选”菜单上的“按窗体筛选”。这样在筛选窗口关闭时将发生 ApplyFilter 事件,然后当其他“筛选”窗口打开时,Filter 事件发生。

在 Access 项目中,用户执行下列操作之一时,ApplyFilter 事件发生:

?在“窗体”视图中单击“记录”菜单上的“应用筛选/排序”、在“筛选”窗口中单击“筛选”菜单上的“应用筛选/排序”,或者在工具栏上单击“应用筛选”按钮图像,都会应用最近创建的筛选(使用“按窗体筛选”功能创建)。

 

?在“窗体”视图中单击“记录”菜单上的“应用服务器筛选”、在“筛选”窗口中单击“筛选”菜单上的“应用服务器筛选”,或者在工具栏上单击“应用服务器筛选”按钮图像,都会应用最近创建的筛选(使用“按窗体服务器筛选”功能创建)。

 

?在“窗体”视图的“记录”菜单上,指向“筛选”并单击“按选定内容筛选”,或单击工具栏上的“按选定内容筛选”按钮图像,即可基于窗体中当前选定的内容应用筛选。

 

?在“窗体”视图的“记录”菜单上,指向“筛选”并单击“内容排除筛选”。这样即可在窗体的当前选定内容以外应用筛选。

 

?当窗体上的一个绑定控件获得焦点时,单击快捷菜单上的“按选定内容筛选”或“内容排除筛选”,或在“筛选目标”框中输入表达式。

说明

当该事件发生时,若要运行一个事件过程,可将 OnApplyFilter 属性设置为宏的名称或 [事件过程]。

使用 ApplyFilter 事件可以:

?确保正在应用的筛选是正确的。例如,可能希望确定应用于“订单”窗体的任意筛选包括了限制“订购日期”字段的条件。为此,请检查窗体的 FilterServerFilter 属性值,以确保该条件包含在 WHERE 子句表达式中。

?在应用筛选之前更改窗体的显示。例如,应用某个筛选时,可能会因为某些字段不适合于该筛选所显示的记录,而要求禁用或隐藏某些字段。

 

?撤消或改变 Filter 事件发生时所进行的操作。例如,因为并不希望将某些控件包括在筛选条件之内,所以可以在用户创建筛选时隐藏或禁用窗体上的这些控件,然后在应用筛选后再启用或显示它们。

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

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

?通过在宏内使用 ApplyFilterOpenFormShowAllRecords 操作,或使用这些操作在 Visual Basic 中 DoCmd 对象的对应方法,即可应用或者取消筛选。

?使用 Close 操作或 DoCmd 对象的 Close 方法可以关闭“高级筛选/排序”、“按窗体筛选”或“按窗体的服务器筛选”窗口。

?在宏或 Visual Basic 中对 FilterServerFilter 属性或 FilterOnServerFilterByForm 属性进行设置(尽管完全可以在 ApplyFilter 宏或事件过程中对这些属性进行设置)。

示例

以下示例显示了当筛选用于限制那些已支付的订单记录时,如何在“订单”窗体上隐藏“数量”、“折扣”和“总价”控件。

若要试用该示例,请在包含“数量”、“折扣”和“总价”控件的“订单”窗体中添加下列事件过程。运行只列出那些已支付了的订单记录的筛选。

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