适用于:Access 2013、Office 2013
可以使用 SearchForRecord 操作在表、查询、窗体或报表中搜索特定记录。
Setting
SearchForRecord 操作具有下列参数。
操作参数 |
说明 |
||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|
对象类型 |
请输入或选择要在其中进行搜索的数据库对象的类型。 可以选择“表”、“查询”、“窗体”或“报表”。 |
||||||||||
对象名称 |
请输入或选择包含要搜索的记录的特定对象。 下拉列表会显示属于您为“对象类型”参数选择的类型的所有数据库对象。 |
||||||||||
Record |
指定搜索操作的起点和方向。
|
||||||||||
Where 条件 |
请使用与 SQL WHERE 子句相同的语法输入搜索条件,只是不带单词“WHERE”。 例如, 'Description = “饮料”' 若要创建包含窗体文本框值的条件,必须创建一个表达式,该表达式将条件的第一部分与包含要搜索的值的文本框的名称连接在一起。 例如,下面的条件将在“说明”字段中搜索名为 frmCategories 的窗体上的名为 txtDescription 的文本框中的值。 请注意,表达式应以等号 (=) 开头,而且文本框引用的每一侧都应使用单引号 ('): '=“Description = ' ” & Forms![frmCategories]![txtDescription] &“'” |
备注
如果有多条记录符合“Where 条件”参数中的条件,则最终会找到哪一条记录将由下列因素决定:
Record 参数设置有关 Record 参数的详细信息,请参阅 Settings 部分中的表。
记录的排序顺序例如,如果 Record 参数设置为 First,则更改记录的排序顺序可能会更改找到的记录。
在此操作运行前,必须打开在“对象名称”参数中指定的对象。 否则将发生错误。
If the criteria in the Where Condition argument are not met, no error occurs and the focus remains on the current record.
When searching for the previous or next record, the search does not "wrap" when it reaches the end of the data. 如果没有满足条件的其他记录,不会发生错误,且焦点仍保留在当前记录上。 要确认找到了匹配项,可以输入下一个操作的条件,并使该条件与“Where 条件”参数中的条件相同。
要在 VBA 模块中运行 SearchForRecord 操作,请使用 DoCmd 对象的 SearchForRecord 方法。
SearchForRecord 操作类似于 FindRecord 操作,但 SearchForRecord 的搜索功能更加强大。 FindRecord 操作主要用于查找字符串,其功能与 "查找" 对话框相同。 SearchForRecord 操作使用的条件更像是筛选或 SQL 查询的条件。 下面的列表显示了可以通过 SearchForRecord 操作执行的一些操作:
可以在“Where 条件”参数中使用复杂条件,例如
Description = "Beverages" and CategoryID = 11可以引用位于窗体或报表的记录源中但没有在窗体或报表上显示的字段。 在前面的示例中,说明和 CategoryID 都不得显示在窗体或报表上,条件才能正常工作。
可以使用逻辑运算符,例如 <、>、AND、OR 和 BETWEEN。 FindRecord 操作仅匹配与被搜索字符串相同、以被搜索的字符串开头或者包含被搜索的字符串的字符串。
示例
以下宏首先使用 OpenTable 操作打开 Categories 表。 然后,该宏使用 SearchForRecord 操作查找表中“说明”字段等于“饮料”的第一条记录。
操作 |
参数 |
|---|---|
OpenTable |
表名称:类别视图: 数据表数据模式: 编辑 |
SearchForRecord |
对象类型: TableObject 名称: 类别记录: FirstWhere 条件: Description = “饮料” |