2016-05-16 15 views
0

Ist es möglich, DoCmd.GoToRecord oder DoCmd.FindRecord zu verwenden, um schnell einen Datensatz in einer Tabelle zu finden, den Datensatz zu bearbeiten und den Fokus auf diesen Datensatz zu richten (ich möchte später mit diesem Datensatz beginnen) ?DAO-Datensatz finden

Ich glaube, solche Methode (falls zutreffend) wäre schneller als das gesamte Recordset (insbesondere mit einem großen Recordset).

der Primärschlüssel Unter der Annahme, 9999 (Fields (0) = 9999), Ich habe versucht:

Dim rs as DAO.Recordset 

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

I "1" erhalten; Die Methode ist fehlgeschlagen.

+0

Dieser Code findet den Wert "9999" in dem Feld im Fokus des Formulars im Fokus. 'rs.Fields (0)' zeigt immer noch auf den ersten Datensatz, das ist die '1', die Sie erhalten. – marlan

Antwort

3

Mit einem DAO.Recordset verwenden Sie die rs.FindFirst and rs.FindNext Methoden.

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 

Wenn es eine lokale Tabelle ist, gibt es auch die rs.Seek Methode, aber wenn es eine Chance gibt, dass der Tisch wird ein Tag von einem Back-End oder Server-Datenbank verknüpft werden, ich mit den Find-Methoden schlagen kleben.