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 操作是否已成功。 如果搜索成功,则 NoMatchFalse。 如果搜索失败,则 NoMatchTrue,并且不定义当前记录。 在这种情况下,必须将当前记录指针往回定位到有效的记录。

借助 Microsoft Access 数据库连接引擎且访问 ODBC 的记录集使用Find方法效率低下。 你可能会发现,通过改写条件查找特定记录速度更快,在处理大型记录集时尤其如此。

在处理 Microsoft Access 数据库引擎连接的 ODBC 数据库以及大型动态集类型 Recordset 对象时,可能会发现使用 Find 方法或使用 SortFilter 属性都比较慢。 若要改善性能,请将 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 对象可单独满足您的需求。