【问题标题】:Find DAO Record查找 DAO 记录
【发布时间】:2016-09-12 13:36:39
【问题描述】:

是否可以使用 DoCmd.GoToRecord 或 DoCmd.FindRecord 来快速查找表中的记录、编辑记录并获得该记录的焦点(我想稍后从该记录开始循环)?

我相信这种方法(如果适用)会比遍历整个记录集(尤其是大型记录集)更快。

假设主键是 9999 (Fields(0) = 9999),我试过了:

Dim rs as DAO.Recordset

Set rs = CurrentDb.OpenRecordset("Tbltest")
DoCmd.FindRecord "9999", acEntire, True, acSearchAll, True
Debug.Print rs.Fields(0)

我得到“1”;该方法失败。

【问题讨论】:

  • 此代码在焦点表单的焦点字段中查找值“9999”。 rs.Fields(0) 仍然指向第一条记录,即你得到的 '1'。

标签: ms-access vba ms-access-2010 dao recordset


【解决方案1】:

对于DAO.Recordset,您可以使用rs.FindFirst and rs.FindNext 方法。

Set rs = CurrentDb.OpenRecordset("Tbltest", dbOpenDynaset)
lngValue = 9999
rs.FindFirst "myPrimaryKey = " & lngValue

' start loop from there
If Not rs.NoMatch Then
    Do While Not rs.EOF
        Debug.Print rs(0)
        rs.MoveNext
    Loop
End If

如果是本地表,也有rs.Seek 方法,但如果表有可能有一天会从后端或服务器数据库链接,我建议坚持使用 Find 方法。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-14
    • 1970-01-01
    • 2010-10-14
    • 2019-02-28
    相关资源
    最近更新 更多