可以使用 ApplyFilter 操作将 筛选器 、 查询 或 SQL WHERE 子句应用于 表 、 窗体 或 报表 ,以限制或排序表中的记录,或者窗体或报表的基础表或查询中的记录。 对于报表,只能在报表的 OnOpen 事件属性指定的 宏 中使用此操作。
注意: 仅当应用服务器筛选器时,才能使用此操作来应用 SQL WHERE 子句。 服务器筛选器不能应用于存储过程的记录源。
注意: ApplyFilter 宏操作在 Access Web 应用中不可用。
设置
ApplyFilter 操作具有以下参数。
操作参数 |
说明 |
筛选器名称 |
限制表、窗体或报表的记录或排序的筛选器或查询的名称。 可以在“宏生成器”窗格的“操作参数”部分的“筛选器名称”框中输入现有查询或已保存为查询的筛选器的名称。 注意: 使用此操作应用服务器筛选器时, “筛选器名称” 参数必须为空。 |
Where 条件 |
有效的 SQL WHERE 子句 (没有 WHERE) 一词或限制表、窗体或报表记录的 表达式 。 注意: 在 Where Condition 参数表达式中,表达式的左侧通常包含来自窗体或报表的基础表或查询的字段名称。 表达式的右侧通常包含要应用于此字段以限制记录或对记录进行排序的 条件 。 例如,条件可以是另一个窗体上的控件的名称,该控件包含你希望第一个窗体中的记录匹配的值。 控件的名称应完全限定,例如: Forms!formname!controlname 字段名称应用双引号括起来,字符串文本应用单引号括起来。 Where Condition 参数的最大长度为 255 个字符。 如果需要输入更长的 SQL WHERE 子句,请在 Visual Basic for Applications (VBA) 模块中使用 DoCmd 对象的 ApplyFilter 方法。 可以在 VBA 中输入最多 32,768 个字符的 SQL WHERE 子句语句。 |
注意: 如果已定义提供相应数据的筛选器,则可以使用 Filter Name 参数。 可以使用 Where Condition 参数直接输入限制条件。 如果使用这两个参数, Access 将 WHERE 子句应用于筛选器的结果。 必须使用一个或两个参数。
备注
可以将筛选器或查询应用于 窗体视图 或 数据表视图 中的窗体。
应用的筛选器和 WHERE 条件将成为窗体或报表的 Filter 或 ServerFilter 属性的设置。
对于表和窗体,此操作类似于单击“记录”菜单上的“应用筛选器/排序”或“应用服务器筛选器”。 菜单命令将最近创建的筛选器应用于表或窗体,而 ApplyFilter 操作应用指定的筛选器或查询。
在 Access 数据库中,如果指向“记录”菜单上的“筛选”,然后在运行 ApplyFilter 操作后单击“高级筛选/排序”,则 “高级筛选/排序”窗口 显示已使用此操作选择的筛选条件。
若要删除筛选器并显示 Access 数据库中表或窗体的所有记录,可以使用“记录”菜单上的“ShowAllRecords”操作或“删除筛选器/排序”命令。 若要删除 Access 项目中 (.adp) 中的筛选器,可以返回到 按窗体服务器筛选 窗口并删除所有筛选条件,然后单击工具栏上的“记录”菜单上的“应用服务器筛选器”,或将“ServerFilterByForm”属性设置为 False (0) 。
保存表或窗体时,Access 将保存当前在该对象中定义的任何筛选器,但在下次打开对象时不会自动应用筛选器 (尽管它将在保存) 之前自动应用你应用于该对象的任何排序。 如果要在首次打开窗体时自动应用筛选器,请指定包含 ApplyFilter 操作的宏或包含 DoCmd 对象的 ApplyFilter 方法的事件过程作为窗体的 OnOpen 事件属性设置。 还可以使用 OpenForm 或 OpenReport 操作或其相应方法应用筛选器。 若要在首次打开表时自动应用筛选器,可以使用包含 OpenTable 操作的宏打开该表,后跟 ApplyFilter 操作。
示例
使用宏应用筛选器
以下宏包含一组操作,每个操作都会筛选客户电话列表窗体的记录。 它显示了 ApplyFilter、 ShowAllRecords 和 GoToControl 操作的用法。 它还显示了使用条件来确定在窗体上选择了选项组中的哪个切换按钮。 每个操作行都与一个切换按钮相关联,该按钮选择以 A、B、C 等开头的记录集或所有记录。 此宏应附加到 CompanyNameFilter 选项组的 AfterUpdate 事件。
条件 |
采取行动的 |
参数:设置 |
评论 |
[CompanyNameFilters]=1 |
ApplyFilter |
Where Condition: [CompanyName] like “[Aàáâä]*” |
筛选以 A、À、Á、Â、À 或 Ä 开头的公司名称。 |
[CompanyNameFilters]=2 |
ApplyFilter |
Where Condition: [CompanyName] like “B*” |
筛选以 B 开头的公司名称。 |
[CompanyNameFilters]=3 |
ApplyFilter |
Where Condition: [CompanyName] like “[CÇ]*” |
筛选以 C 或 Ç 开头的公司名称。 |
...D 到 Y 的操作行的格式与 A 到 C 相同... |
|||
[CompanyNameFilters]=26 |
ApplyFilter |
Where Condition: [CompanyName] like “[ZÆØå]*” |
筛选以 Z、Æ、Ø 或 Å 开头的公司名称。 |
[CompanyNameFilters]=27 |
ShowAllRecords |
显示所有记录。 |
|
[RecordsetClone]。[RecordCount]>0 |
GoToControl |
控件名称:CompanyName |
如果为所选字母返回记录,请将焦点移动到 CompanyName 控件。 |