可以使用 Access 桌面数据库中的 SearchForRecord 宏操作在表、查询、窗体或报表中搜索特定记录。
设置
SearchForRecord 宏操作具有以下参数。
操作参数 |
说明 |
||||||||||
对象类型 |
输入或选择要搜索的数据库对象的类型。 可以选择“表”、“查询”、“窗体”或“报表”。 |
||||||||||
对象名称 |
输入或选择包含要搜索的记录的特定对象。 下拉列表显示为 Object Type 参数选择的类型的所有数据库对象。 |
||||||||||
录制 |
指定搜索的起点和方向。
|
||||||||||
Where 条件 |
使用与 SQL WHERE 子句相同的语法输入搜索条件,但不包含单词“WHERE”。 例如, Description = "Beverages" 若要创建包含窗体文本框值的条件,必须创建一个表达式,该表达式将条件的第一部分与包含要搜索的值的文本框的名称连接在一起。 例如,以下条件将在名为 frmCategories 的窗体上名为 txtDescription 的文本框中搜索“说明”字段的值。 请注意表达式开头的等号 (=) ,在文本框引用的任一端使用单引号 (') : ="Description = '" & Forms![frmCategories]![txtDescription] & "'" |
备注
-
在多个记录与 Where Condition 参数中的条件匹配的情况下,以下因素确定找到的记录:
-
Record 参数设置 有关 Record 参数的详细信息,请参阅 Settings 部分中的表。
-
记录的排序顺序 例如,如果 Record 参数设置为 First,则更改记录的排序顺序可能会更改找到的记录。
-
-
在运行此操作之前,必须在 “对象名称” 参数中指定的对象处于打开状态。 否则,将发生错误。
-
如果未满足 Where Condition 参数中的条件,则不会发生任何错误,并且焦点将保留在当前记录上。
-
搜索上一条或下一条记录时,搜索到达数据末尾时不会“包装”。 如果没有其他与条件匹配的记录,则不会发生任何错误,并且焦点将保留在当前记录上。 若要确认找到匹配项,可以为下一个操作输入条件,并使条件与 Where Condition 参数中的条件相同。
-
若要在 VBA 模块中运行 SearchForRecord 操作,请使用 DoCmd 对象的 SearchForRecord 方法。
-
SearchForRecord 宏操作类似于 FindRecord 宏操作,但 SearchForRecord 具有更强大的搜索功能。 FindRecord 宏操作主要用于查找字符串,并复制“查找”对话框的功能。 SearchForRecord 宏操作使用的条件更类似于筛选器或 SQL 查询的条件。 以下列表演示了可使用 SearchForRecord 宏操作执行的一些操作:
-
可以在 Where Condition 参数中使用复杂条件,例如
-
Description = “饮料” 和 CategoryID = 11
-
可以引用窗体或报表的记录源中但不显示在窗体或报表上的字段。 在前面的示例中, Description 和 CategoryID 都不得显示在窗体或报表上,条件才能正常工作。
-
可以使用逻辑运算符,例如 <、 >、 AND、 OR 和 BETWEEN。 FindRecord 操作仅匹配等于、以 开头或包含要搜索的字符串的字符串。
示例
以下宏首先使用 OpenTable 操作打开 Categories 表。 然后,该宏使用 SearchForRecord 宏操作查找表中“说明”字段等于“饮料”的第一条记录。
操作 |
参数 |
OpenTable |
表名称:类别 视图: 数据表 数据模式: 编辑 |
SearchForRecord |
对象类型: 表 对象名称:类别 记录: 第一个 其中条件:说明 = “饮料” |