2016-05-16 126 views
0

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

我相信这样的方法(如果适用)比循环整个记录集(尤其是大记录集)要快。

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

+0

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

回答

3

With a DAO.Recordset,you use the rs.FindFirst and rs.FindNext methods。

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方法,但如果有机会的话,该表将有一天可以从后端或服务器的数据库连接,我建议与查找方法坚持。