Was ist eigentlich ein Recordset?
Ein Recordset stellt eigentlich nichts weiteres als eine Datensatzgruppe dar.
Also z.B. der Inhalt einer Tabelle oder das Ergebnis einer Abfrage. Man kann
sich auch einen Recordset direkt auf eine Abfrage öffnen oder den Recordsets
eines Formulars verweden.
Es gibt 2 Arten von Recordset's. ADO und DAO. Diese beiden unterscheiden sich in der Programmierung und der Zugriffsart.
DAO ist in der Regel schneller geschrieben und z.B. die FindFirst-Methode (DAO) ist sehr viel komfortabler als die Find-Methode (ADO).
Beide haben ihre Vor- und Nachteile. Für welche man sich entscheidet ist eigentlich
egal, wenn man sich vorher überlegt, was man damit machen will.
In beiden Fällen kann man einen Recordset als Abfrageergebniss oder auf eine
Tabelle direkt öffnen.
Um ihn vom 1. bis zum letzten Datensatz zu durchlaufen kann man eine entweder ein Do...Loop oder ein While...Wend verwenden.
Welche Schleife man verwendet ist eigentlich egal, aber nur in einer Do Schleife kann man ein Exit Do verwenden.
Um einen Recordset von der 1. bis zur letzten Spalte zu durchlaufen kann man die Fields-Auflistung verwenden und eine For-Schleife.
Das With verkürzt nur die Programmierung und man kann sich vor jedem "." oder "!" ein
rs vorstellen.
ADO-Recordset mit Do...Loop-Schleife und einer Tabelle:
Dim rs As ADODB.Recordset Dim i As Long Set rs = New ADODB.Recordset With rs .ActiveConnection = CurrentProject.Connection .CursorType = adOpenStatic .LockType = adLockOptimistic .Open "DeineTabelle" Do Until .EOF For i = 0 To .Fields.Count - 1 Debug.Print .Fields(i) Next i .MoveNext Loop End With rs.Close Set rs = Nohting
DAO-Recorset mit While...Wend-Schleife und einer Abfrage:
Dim rs As DAO.Recordset Dim strSQL As String strSQL = "SELECT * FROM Tabelle WHERE Tabellenfeld ='xyz'" Set rs = DBEngine(0)(0).OpenRecordset(strSQL, dbOpenDynaset) With rs While Not .EOF For i = 0 To .Fields.Count -1 Debug.Print .Fields(i) Next i .MoveNext Wend End With rs.Close Set rs = Nothing
Einen neuen Datensatz kann man mit .AddNew anfügen und einen bestehenden mit .Edit aktualisieren.