DoCmd.ApplyFilter 方法 (Access)

ApplyFilter 方法在 Visual Basic 中执行 ApplyFilter 操作。

语法

表达式ApplyFilter (FilterNameWhereConditionControlName)

expression:表示 DoCmd 对象的变量。

参数

名称 必需/可选 数据类型 说明
FilterName 可选 Variant 字符串表达式,表示当前数据库中筛选或查询的有效名称。 使用此方法应用服务器筛选器时, FilterName 参数必须为空。
WhereCondition 可选 Variant 字符串表达式,表示不包含 WHERE 关键字的有效 SQL WHERE 子句。
ControlName 可选 Variant

说明

使用 ApplyFilter 操作可对表、窗体或报表应用筛选器、查询或 SQL WHERE 子句,以限制表或基础表或窗体或报表查询中的记录或对其进行排序。 对于报表,只能在由报表的 OnOpen 事件属性所指定的宏中使用此操作。

仅当应用服务器筛选器时,才使用此操作来应用 SQL WHERE 子句。 服务器筛选不能应用于存储过程记录源。

注意

如果已定义提供相应数据的筛选器,请使用 FilterName 参数。 使用 WhereCondition 参数直接输入限制条件。 如果同时使用这两个参数,则 Microsoft Access 会将 WHERE 子句应用于筛选结果。 必须至少使用这两个参数中的一个。

可以对窗体视图或数据表视图中的窗体应用筛选或查询。

应用的筛选器和 WHERE 条件将成为窗体的 Filter 属性或报表的 ServerFilter 属性的设置。

保存表或窗体时,Access 会保存当前在该对象中定义的任何筛选器,但在下次打开对象时不会自动应用该筛选器 (尽管在对象保存) 之前,它会自动应用你应用于该对象的任何排序。

如果你希望在首次打开窗体时自动应用筛选器,请指定包含 ApplyFilter 操作的宏,或包含 DoCmd 对象的 ApplyFilter 方法的事件过程,作为窗体的 OnOpen 事件属性设置。 你也可以使用 OpenForm/OpenReport 操作或其对应的方法来应用筛选器。 若要在首次打开表时自动应用筛选器,你可以使用包含 OpenTable 操作(后跟 ApplyFilter 操作)的宏来打开表。

至少必须添加两个 ApplyFilter 方法自变量中的一个。 如果你同时输入两个自变量的值,则 WhereCondition 自变量会应用于筛选器。

WhereCondition 参数的最大长度为 32,768 个字符(而在“宏”窗口中,WhereCondition 操作参数的最大长度为 256 个字符)。

示例

以下示例使用 ApplyFilter 方法仅显示 LastName 字段中包含名称“King”的记录。

DoCmd.ApplyFilter , "LastName = 'King'"

以下示例演示如何使用 ApplyFilter 属性筛选在选择名为 tglFilter 的 切换按钮时显示的记录。

Private Sub tglFilter_Click()
    With tglFilter
        If .Value = True Then
            .Caption = "P/T"
            .StatusBarText = "only full-timers"
            DoCmd.ApplyFilter , "[Hours]=40"
        ElseIf .Value = False Then
            .Caption = "All"
            .StatusBarText = "only part-timers"
            DoCmd.ApplyFilter , "[Hours]<40"
        Else
            .Caption = "F/T"
            .StatusBarText = "all employees"
            DoCmd.ShowAllRecords
            .SetFocus 'to activate the button's statusbar-text
        End If
    End With
End Sub

支持和反馈

有关于 Office VBA 或本文档的疑问或反馈? 请参阅 Office VBA 支持和反馈,获取有关如何接收支持和提供反馈的指南。