Recordset-Objekt (ADO)
Gilt für: Access 2013, Office 2013
Stellt den gesamten Satz der Datensätze aus einer Basistabelle oder die Ergebnisse eines ausgeführten Befehls dar. Das Recordset-Objekt verweist immer nur auf einen einzelnen Datensatz innerhalb des Satzes als aktueller Datensatz.
Hinweise
Mit Recordset -Objekten können Sie Daten eines Anbieters ändern. Wenn Sie ADO verwenden, ändern Sie Daten fast ausschließlich mit Recordset -Objekten. Alle Recordset -Objekte bestehen aus Datensätzen (Zeilen) und Feldern (Spalten). Abhängig von der vom Anbieter unterstützten Funktionalität sind einige Recordset -Methoden oder -Eigenschaften möglicherweise nicht verfügbar.
ADODB.Recordset is the ProgID that should be used to create a Recordset object. Existing applications that reference the outdated ADOR.Recordset ProgID will continue to work without recompiling, but new development should reference ADODB.Recordset.
In ADO sind vier verschiedene Cursortypen definiert:
Dynamischer Cursor. Mit diesem Cursortyp können Sie Hinzufügungen, Änderungen und Löschungen anderer Benutzer anzeigen. Er gestattet alle Typen von Bewegungen innerhalb des Recordset -Objekts, für die keine Textmarken erforderlich sind. Außerdem gestattet er Textmarken, sofern der Anbieter Textmarken unterstützt.
Keysetcursor – verhält sich wie ein dynamischer Cursor, mit dem Unterschied, dass er verhindert, dass Sie Datensätze anzeigen, die andere Benutzer hinzufügen, und verhindert den Zugriff auf Datensätze, die andere Benutzer löschen. Datenänderungen durch andere Benutzer sind weiterhin sichtbar. Es unterstützt immer Lesezeichen und ermöglicht daher alle Arten von Bewegung durch das Recordset.It always supports bookmarks and somit all types of movement through the Recordset.
Statischer Cursor – stellt eine statische Kopie einer Gruppe von Datensätzen bereit, die Sie verwenden können, um Daten zu finden oder Berichte zu generieren. ermöglicht immer Lesezeichen und somit alle Arten von Bewegung durch das Recordset. Ergänzungen, Änderungen oder Löschungen durch andere Benutzer sind nicht sichtbar. Dies ist der einzige Cursortyp, der beim Öffnen eines clientseitigen Recordset-Objekts zulässig ist.
Vorwärtscursor – ermöglicht es Ihnen, nur durch das Recordset-Objekt nach vorne zu scrollen. Ergänzungen, Änderungen oder Löschungen durch andere Benutzer sind nicht sichtbar. Dies verbessert die Leistung in Situationen, in denen Sie nur einen einzelnen Durchlauf durch ein Recordset-Objekt durchführen müssen.
Legen Sie vor dem Öffnen des Recordset-Objekts die CursorType-Eigenschaft fest, um den Cursortyp auszuwählen, oder übergeben Sie ein CursorType-Argument mit der Open-Methode. Einige Anbieter unterstützen nicht alle Cursortypen. Überprüfen Sie die Dokumentation des Anbieters diesbezüglich. Wenn Sie keinen Cursortyp festlegen, öffnet ADO standardmäßig einen vorwärtsgerichteten Cursor.
Wenn die CursorLocation-Eigenschaft auf adUseClient festgelegt ist, um ein Recordset zu öffnen, ist die UnderlyingValue-Eigenschaft für Field-Objekte im zurückgegebenen Recordset-Objekt nicht verfügbar. Bei Verwendung mit einigen Anbietern (z. B. dem Microsoft ODBC-Anbieter für OLE DB in Verbindung mit Microsoft SQL Server) können Sie Recordset-Objekte unabhängig von einem zuvor definierten Connection-Objekt erstellen, indem Sie eine Verbindungszeichenfolge mit der Open-Methode übergeben. ADO erstellt weiterhin ein Connection-Objekt , weist dieses Objekt jedoch keiner Objektvariablen zu. Wenn Sie jedoch mehrere Recordset-Objekte über dieselbe Verbindung öffnen, sollten Sie explizit ein Connection-Objekt erstellen und öffnen. Dadurch wird das Connection-Objekt einer Objektvariablen zugewiesen. Wenn Sie diese Objektvariable beim Öffnen ihrer Recordset-Objekte nicht verwenden, erstellt ADO ein neues Connection-Objekt für jedes neue Recordset-Objekt, auch wenn Sie denselben Verbindungszeichenfolge übergeben.
Sie können beliebig viele Recordset -Objekte erstellen.
Wenn Sie ein Recordset -Objekt öffnen, wird der aktuelle Datensatz an die Position des ersten Datensatzes platziert (falls vorhanden), und die Eigenschaften BOF und EOF erhalten den Wert False. Wenn keine Datensätze enthalten sind, haben die Eigenschaften BOF und EOF den Wert True.
Mit den Methoden MoveFirst, MoveLast, MoveNext und MovePrevious, der Move-Methode und den Eigenschaften AbsolutePosition, AbsolutePage und Filter können Sie den aktuellen Datensatz neu positionieren, sofern der Anbieter die betreffende Funktionalität unterstützt. Vorwärtsgerichtete Recordset-Objekte unterstützen nur die MoveNext-Methode. Wenn Sie die Move-Methoden verwenden, um zu den einzelnen Datensätzen zu navigieren (oder um das Recordset-Objekt in einer Schleife zu durchlaufen), können Sie mithilfe der Eigenschaften BOF und EOF feststellen, ob Sie vor den Anfang oder hinter das Ende des Recordset-Objekts navigiert sind.
Recordset -Objekte können zwei Typen von Aktualisierungen unterstützen: die sofortige Aktualisierung und die Batchaktualisierung. Bei der sofortigen Aktualisierung werden alle Datenänderungen sofort, wenn Sie die Update-Methode aufrufen, in die zugrunde liegende Datenquelle geschrieben. Sie können auch mit den Methoden AddNew und Update ein Array von Werten als Parameter übergeben und mehrere Felder in einem Datensatz gleichzeitig aktualisieren.
Wenn ein Anbieter die Batchaktualisierung unterstützt, können Sie dafür sorgen, dass der Anbieter Änderungen an mehreren Datensätzen zwischenspeichert und die Änderungen dann in einem einzigen Aufruf mit der UpdateBatch-Methode an die Datenbank übergibt. Dies gilt für Änderungen, die mit den Methoden AddNew, Update und Delete vorgenommen werden. Wenn Sie die UpdateBatch -Methode aufgerufen haben, können Sie mit der Status-Eigenschaft nach Datenkonflikten suchen, um sie zu lösen.
Hinweis
Um eine Abfrage ohne Verwendung eines Command-Objekts auszuführen, übergeben Sie eine Abfragezeichenfolge an die Open-Methode eines Recordset-Objekts . However, a Command object is required when you want to persist the command text and re-execute it, or use query parameters.
Die Mode-Eigenschaft steuert die Zugriffsberechtigungen.
Die Fields -Auflistung ist das Standardmitglied des Recordset -Objekts. Die beiden folgenden Codeanweisungen haben daher dieselbe Bedeutung.
Debug.Print objRs.Fields.Item(0) ' Both statements print
Debug.Print objRs(0) ' the Value of Item(0).