2016-05-16 125 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方法,但如果有機會的話,該表將有一天可以從後端或服務器的數據庫連接,我建議與查找方法堅持。