Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/ms-access/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Ms access 查找DAO记录_Ms Access_Vba_Ms Access 2010_Dao_Recordset - Fatal编程技术网

Ms access 查找DAO记录

Ms access 查找DAO记录,ms-access,vba,ms-access-2010,dao,recordset,Ms Access,Vba,Ms Access 2010,Dao,Recordset,是否可以使用DoCmd.GoToRecord或DoCmd.FindRecord在表中快速查找记录、编辑记录并获得该记录的焦点(我想稍后从该记录开始循环) 我相信这种方法(如果适用的话)会比在整个记录集(尤其是大型记录集)中循环更快 假设主键是9999(字段(0)=9999),我尝试了: Dim rs as DAO.Recordset Set rs = CurrentDb.OpenRecordset("Tbltest") DoCmd.FindRecord "9999", acEntire, Tr

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

我相信这种方法(如果适用的话)会比在整个记录集(尤其是大型记录集)中循环更快

假设主键是9999(字段(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”;该方法失败

使用
DAO.Recordset
,您可以使用以下方法


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

对于
DAO.Recordset
,您可以使用这些方法

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

此代码在焦点表单的焦点字段中查找值“9999”
rs.Fields(0)
仍然指向第一条记录,即您得到的“1”。此代码在焦点窗体的焦点字段中查找值“9999”
rs.Fields(0)
仍然指向第一条记录,即您得到的“1”。
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