适用于:Access 2013、Office 2013
可以使用 ApplyFilter 操作对表、窗体或报表应用筛选、查询或 SQL WHERE 子句,以便对表、基础表或是窗体或报表查询中的记录进行限制或排序。 对于报表,只能在由报表的 OnOpen 事件属性所指定的宏中使用此操作。
注意
[!注释] 只有在应用服务器筛选时,才可以使用该操作以应用 SQL WHERE 子句。 服务器筛选不能应用于存储过程记录源。
Setting
ApplyFilter 操作具有下列参数。
操作参数 |
说明 |
|---|---|
Filter Name |
用于对表、窗体或报表中的记录进行限制或排序的筛选或查询的名称。 可以在“宏生成器”窗格的“操作参数”部分的“筛选器名称”框中输入现有查询或已保存为查询的筛选器的名称。 注意:使用此操作应用服务器筛选器时,“筛选器名称”参数必须为空。 |
Where 条件 |
用于限制表、窗体或报表中的记录的有效 SQL WHERE 子句(不含单词 WHERE)或表达式。 注意:在 Where Condition 参数表达式中,表达式的左侧通常包含来自窗体或报表的基础表或查询的字段名称。 表达式的右侧则通常包含要向此字段应用以对记录进行限制或排序的条件。 例如,条件可以是另一个窗体上某个控件的名称,该控件包含要让第一个窗体中的记录与之匹配的值。 该控件的名称应完全限定,例如: Forms!formname!controlname 字段名称应用双引号括起来,字符串文本应用单引号括起来。 “Where 条件”参数的最大长度为 255 个字符。 如果需要输入更长的 SQL WHERE 子句,请使用 Visual Basic for Applications (VBA) 模块中 DoCmd 对象的 ApplyFilter 方法。 在 VBA 中,可输入长达 32,768 个字符的 SQL WHERE 子句语句。 |
注意
You can use the Filter Name argument if you have already defined a filter that provides the appropriate data. 也可以直接使用“Where 条件”参数来输入限制条件。 If you use both arguments, Microsoft Office Access 2007 applies the WHERE clause to the results of the filter. 必须使用这两个参数之一,或同时使用它们。
备注
可以对窗体视图或数据表视图中的窗体应用筛选或查询。
所应用的筛选和 WHERE 条件将成为窗体或报表的 "Filter" 或 "ServerFilter" 属性设置。
对于表和窗体,此操作类似于单击 "记录" 菜单上的 "应用筛选/排序" 或 "应用服务器筛选"。 菜单命令会向表或窗体应用最近创建的筛选,而 ApplyFilter 操作则应用指定的筛选或查询。
在数据库中,如果在运行 ApplyFilter 操作后指向 "记录" 菜单上的 "筛选" 并单击 "高级筛选/排序","高级筛选/排序"窗口将显示您使用此操作选择的筛选条件。
要在 Office Access 2007 数据库中删除筛选并显示表或窗体的所有记录,可以使用 ShowAllRecords 操作或 "记录" 菜单上的 "取消筛选/排序" 命令。 要在 Microsoft Access 项目 (.adp) 中删除筛选,可以返回到"按窗体服务器筛选"窗口并删除所有的筛选条件,然后在工具栏的 "记录" 菜单上单击 "应用服务器筛选",也可以将 "ServerFilterByForm" 属性设置为 "False"(0)。
在保存表或窗体时,Access 会保存当前在该对象中定义的任何筛选,但不会在下次打开该对象时自动应用筛选(不过,它会自动应用保存该对象之前应用的任何排序)。 如果要在首次打开某个窗体时自动应用筛选,请指定一个包含 ApplyFilter 操作的宏,或指定一个包含 DoCmd 对象的 ApplyFilter 方法的事件过程,并将其作为该窗体的 OnOpen 事件属性设置。 您也可以使用 OpenForm 操作、 OpenReport 操作或与它们相对应的方法应用筛选。 要在首次打开某个表时自动应用筛选,可以使用接连包含 OpenTable 操作和 ApplyFilter 操作的宏打开该表。
示例
以下示例演示如何使用 ApplyFilter 操作在打开 frmFoods 窗体时对其进行筛选。
示例代码提供方:Microsoft Access 2010 程序员参考。
OpenForm
Form Name sfrmFoods
View Form
Filter Name
Where Condition
Data Mode
Window Mode Normal
ApplyFilter
Filter Name
Where Condition=[display_name] Link "*cheese*"
Control Name