使用 ApplyFilter 操作可以对表、窗体或报表应用筛选、查询或 SQL WHERE 子句,以便限制或排序表的记录以及窗体或报表的基础表或基础查询中的记录。对于报表,只能在其“打开”事件属性所指定的宏中使用该操作。
注释 只有在应用服务器筛选时,才可以使用该操作以应用 SQL WHERE 子句。服务器筛选不能应用于存储过程记录源。
ApplyFilter 操作具有以下参数:
操作参数 |
说明 |
筛选名称 |
用以限制或排序表、窗体或报表中的记录的筛选或查询的名称。可以输入已有查询或筛选的名称,该筛选已作为查询保存在“宏”窗口“操作参数”节的“筛选名称”框内。 注释 当使用该操作应用服务器筛选时,筛选名称必须为空。 |
Where 条件 |
有效的 SQL WHERE 子句(不包含 WHERE 一字)或表达式,用以限制表、窗体或报表中的记录。 注释 在“Where 条件”参数表达式中,表达式的左侧通常包含窗体或报表的基础表或基础查询中的字段名。表达式的右侧通常包含要应用于该字段的条件,以便对记录进行限制或排序。例如,如果另一个窗体中包含第一个窗体中的记录要与之匹配的值,则条件可以是该窗体中控件的名称。控件名称必须完全限定,例如: Forms!formname!controlname 字段名应使用双引号包围起来,而字面值则应使用单引号。 “Where 条件”参数最长为 255 个字符。如果要输入较长的 SQL 子句,可以在 Microsoft Visual Basic 中,使用 DoCmd 对象的 ApplyFilter 方法。在 Visual Basic 中可以输入最长为 32,768 个字符的 SQL WHERE 子句。 |
注释 如果已经定义了某个提供适当数据的筛选,则可以使用“筛选名称”参数。也可以直接使用“Where 条件”参数来输入限制条件。如果同时使用这两个参数,则 Microsoft Access 会将 WHERE 子句应用于筛选结果。必须至少使用这两个参数中的一个。
所用的筛选和 WHERE 条件将成为窗体或报表的“筛选”或“服务器筛选”属性设置。
对于表和窗体,该操作与单击“记录”菜单上的“应用筛选/排序”或“应用服务器筛选”类似。但是,该菜单命令将对表或窗体应用最新创建的筛选,而 ApplyFilter 操作则应用指定的筛选或查询。
在 Access 数据库中,如果在运行 ApplyFilter 操作之后指向“记录”菜单上的“筛选”,然后单击“高级筛选/排序”,那么“高级筛选/排序”窗口将显示对该操作所选的筛选条件。
在 Access 数据库中,如果要删除筛选并显示表或窗体的全部记录,可使用 ShowAllRecords 操作或“记录”菜单上的“取消筛选/排序”命令。如果要取消 Access 项目 (.adp) 中的筛选,则可以返回到“按窗体服务器筛选”窗口,删除所有筛选条件,然后单击工具栏上“记录”菜单上的“应用服务器筛选”,或将“按窗体服务器筛选”属性设置为 False (0)。
保存表或窗体时,Access 将保存当前在对象中定义的任一筛选,但是下一次打开对象时并不会自动应用该筛选(虽然在保存它之前,会自动应用对对象的任何排序)。如果要在首次打开窗体时自动应用筛选,可以指定一个包含 ApplyFilter 操作的宏,或包含 DoCmd 对象的 ApplyFilter 方法的事件过程作为对窗体的“打开”事件属性的设置。也可以使用 OpenForm 或 OpenReport 操作,或者与它们相对应的方法来应用筛选。如果要在首次打开表时自动应用筛选,可以使用一个包含 OpenTable 操作并紧跟 ApplyFilter 操作的宏来打开表。
下面的宏包含一组操作,每项操作都可对“客户电话列表”窗体的记录进行筛选。它显示了 ApplyFilter、ShowAllRecords 和 GoToControl 操作的使用方法,同时也显示了如何使用条件来判定窗体上所选择的是选项组中哪一个切换按钮。每个操作行都与一个切换按钮相关联,该切换按钮可以选择以 A、B、C 等打头的记录集合,也可以选择所有记录。该宏应附加在 CompanyNameFilter 选项组的 AfterUpdate 事件上。
条件 |
操作 |
参数:设置 |
说明 |
[CompanyNameFilters]=1 |
ApplyFilter |
Where 条件:[公司名称] Like "[AÀÁÂÃÄ]*" |
筛选公司名以 A、À、Á、Â、Ã 或 Ä 打头的记录。 |
[CompanyNameFilters]=2 |
ApplyFilter |
Where 条件:[公司名称] Like "B*" |
筛选公司名以 B 打头的记录。 |
[CompanyNameFilters]=3 |
ApplyFilter |
Where 条件:[公司名称] Like "[CÇ]*" |
筛选公司名以 C 或 Ç 打头的记录。 |
... 由 D 到 Y 的操作行与由 A 到 C 的操作行具有相同的格式 ... |
|||
[CompanyNameFilters]=26 |
ApplyFilter |
Where 条件:[公司名称] Like "[ZÆØÅ]*" |
筛选公司名以 Z、Æ、Ø 或 Å 打头的记录。 |
[CompanyNameFilters]=27 |
ShowAllRecords |
显示所有记录。 |
|
[RecordsetClone].[RecordCount]>0 |
GoToControl |
控件名称:公司名称 |
如果为选定字母返回了记录,那么将焦点移动到 CompanyName 控件。 |