Recordset2.FindLast 方法 (DAO)
适用于:Access 2013、Office 2013
在动态集类型或快照类型的 Recordset 对象中查找符合指定条件的最后一条记录,并且使该记录成为当前记录(仅适用于 Microsoft Access 工作区)。
语法
表达式 。FindLast (Criteria)
表达 一个代表 Recordset2 对象的变量。
参数
名称 |
必需/可选 |
数据类型 |
说明 |
---|---|---|---|
条件 |
必需 |
字符串 |
用于查找记录的字符串。 它类似于 SQL 语句中的 WHERE 子句,但不包括单词 WHERE。 |
说明
如果要在搜索中包括所有记录(而不仅仅是符合特定条件的记录),请使用 Move 方法在记录之间移动。 若要在表类型的 Recordset 中查找记录,请使用 Seek 方法。
如果没找到条件匹配的记录,当前记录指针未知,且 NoMatch 属性设置为 True。 如果记录集包含多个符合条件的记录,则 FindFirst 将查找第一个出现的记录,FindNext 将查找下一个出现的记录,以此类推。
每个 Find 方法都从下表中指定的位置和方向开始搜索。
Find 方法 |
开始搜索的位置 |
搜索方向 |
---|---|---|
FindFirst |
记录集开头 |
记录集结尾 |
FindLast |
记录集结尾 |
记录集开头 |
FindNext |
当前记录 |
记录集结尾 |
FindPrevious |
当前记录 |
记录集开头 |
当使用 FindLast 方法时,Microsoft Access 数据库引擎将在开始搜索之前完全填充您的 Recordset(如果尚未搜索)。
但是,使用 Find 方法之一与使用 Move 方法不同,后者只是将第一条、最后一条、下一条或上一条记录设置为当前记录,而不会指定条件。 可以在 Find 操作后面跟随一个 Move 操作。
始终检查 NoMatch 属性的值,以确定 Find 操作是否已成功。 如果搜索成功,则 NoMatch 为 False。 如果搜索失败,则 NoMatch 为 True,并且不定义当前记录。 在这种情况下,必须将当前记录指针往回定位到有效的记录。
借助 Microsoft Access 数据库连接引擎且访问 ODBC 的记录集使用Find方法效率低下。 你可能会发现,通过改写条件查找特定记录速度更快,在处理大型记录集时尤其如此。
在处理 Microsoft Access 数据库引擎连接的 ODBC 数据库以及大型动态集类型 Recordset 对象时,可能会发现使用 Find 方法或使用 Sort 或 Filter 属性都比较慢。 若要改善性能,请将 SQL 查询与自定义的 ORDER BY 或 WHERE 子句、参数查询或检索特定索引记录的 QueryDef 对象一起使用。
在搜索包含日期的字段时,即使使用的不是美国版本的 Microsoft Access 数据库引擎,也应使用美国日期格式(月-日-年);否则将无法找到数据。 使用 Visual Basic Format 函数转换日期。 例如:
rstEmployees.FindFirst "HireDate > #" _
& Format(mydate, 'm-d-yy' ) & "#"
注意
如果标准由用非整数值连接的字符串组成,并且系统参数指定了诸如逗号的非美国格式小数点字符(例如 strSQL = "PRICE > " & lngPrice 和 lngPrice = 125,50),那么在尝试调用此方法时会发生错误。 这是因为在连接过程中,需要使用系统的默认小数字符将数字转换为字符串,并且 Microsoft Access SQL 只接受美国格式的小数字符。
注意
- 为了获得最佳性能, 条件* 的格式应为“字段 = 值”,其中 字段 是基础基表中的索引字段,或“字段 LIKE 前缀”,其中 field 是基础基表中的索引字段, 前缀 是前缀搜索字符串 (例如“ART*”) 。
- 一般而言,作为等效的搜索类型, Seek 方法的性能优于 Find 方法。 这假定表类型的 Recordset 对象可单独满足您的需求。