Recordset-Objekt (ADO)

Stellt den gesamten Satz von Datensätzen aus einer Basistabelle oder die Ergebnisse eines ausgeführten Befehls dar. Das Recordset-Objekt bezieht sich jederzeit auf nur einen einzigen Datensatz innerhalb des Recordset als aktuellen Datensatz.

Bemerkungen

Sie verwenden Recordset-Objekte, um Daten von einem Anbieter zu bearbeiten. Wenn Sie ADO verwenden, bearbeiten Sie Daten fast vollständig mit Recordset-Objekten. Alle Recordset-Objekte bestehen aus Datensätzen (Zeilen) und Feldern (Spalten). Je nachdem, welche Funktionalität vom Anbieter unterstützt wird, stehen möglicherweise einige Recordset-Methoden oder -Eigenschaften nicht zur Verfügung.

ADODB.Recordset ist die ProgID, die zum Erstellen eines Recordset-Objekts verwendet werden soll. Vorhandene Anwendungen, die auf die veraltete ADOR.Recordset-ProgID verweisen, funktionieren weiter ohne erneutes Kompilieren. Neue Entwicklungen müssen allerdings auf ADODB.Recordset verweisen.

Es gibt vier verschiedene Cursortypen, die in ADO definiert sind:

  • Dynamischer Cursor Ermöglicht das Anzeigen von Ergänzungen, Änderungen und Löschungen anderer Benutzer. Ermöglicht alle Bewegungsarten im Recordset, das nicht auf Textmarken angewiesen ist. Und ermöglicht Textmarken, wenn der Anbieter diese unterstützt.

  • Keyset-Cursor Verhält sich wie ein dynamischer Cursor mit der Ausnahme, dass er die Anzeige von Datensätzen verhindert, die andere Benutzer hinzufügen, und den Zugriff auf Datensätze verhindert, die andere Benutzer löschen. Datenänderungen von anderen Benutzern sind weiterhin sichtbar. Er unterstützt Textmarken stets und ermöglicht dadurch alle Bewegungsarten im Recordset.

  • Statischer Cursor Stellt eine statische Kopie eines Datensatzes bereit, mit der Sie Daten suchen oder Berichte generieren können. Ermöglicht Textmarken stets und dadurch alle Bewegungsarten im Recordset. Ergänzungen, Änderungen oder Löschungen durch andere Benutzer sind nicht sichtbar. Dies ist der einzige zulässige Cursortyp beim Öffnen eines clientseitigen Recordset-Objekts.

  • Vorwärtscursor Ermöglicht Ihnen, vorwärts durch das Recordset zu scrollen. Ergänzungen, Änderungen oder Löschungen durch andere Benutzer sind nicht sichtbar. Dadurch wird die Leistung in Situationen verbessert, in denen nur ein einziger Durchlauf durch ein Recordset erforderlich ist.

Legen Sie die CursorType-Eigenschaft vor dem Öffnen des Recordset fest, um den Cursortyp auszuwählen oder ein CursorType-Argument mit der Open-Methode zu übergeben. Einige Anbieter unterstützen nicht alle Cursortypen. Überprüfen Sie die Dokumentation für den Anbieter. Wenn Sie keinen Cursortyp angeben, öffnet ADO standardmäßig einen Vorwärtscursor.

Wenn die CursorLocation-Eigenschaft auf adUseClient festgelegt ist, um ein Recordset zu öffnen, ist die UnderlyingValue-Eigenschaft für Field-Objekte nicht im zurückgegebenen Recordset-Objekt verfügbar. Bei 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 Objektvariable 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 Objektvariable zugewiesen. Wenn Sie diese Objektvariable beim Öffnen Ihrer Recordset-Objekte nicht verwenden, erstellt ADO ein neues Connection-Objekt für jedes neue Recordset, selbst wenn Sie dieselbe Verbindungszeichenfolge übergeben.

Sie können so viele Recordset-Objekte wie erforderlich erstellen.

Wenn Sie ein Recordset öffnen, wird der aktuelle Datensatz an der ersten Stelle (falls vorhanden) positioniert, und die Eigenschaften BOF und EOF werden auf False festgelegt. Wenn keine Datensätze vorhanden sind, sind die Einstellungen für die Eigenschaften BOF und EOF auf True festgelegt.

Sie können die Methoden MoveFirst, MoveLast, MoveNext und MovePrevious, die Methode Move sowie AbsolutePosition, AbsolutePage und Filter verwenden, um den aktuellen Datensatz neu zu positionieren, vorausgesetzt, der Anbieter unterstützt die relevante Funktionalität. Vorwärts-Recordset-Objekte unterstützen nur die MoveNext-Methode. Wenn Sie die Move-Methoden verwenden, um den jeweiligen Datensatz aufzurufen (oder das Recordset aufzuzählen), können Sie mit den Eigenschaften BOF und EOF feststellen, ob die Verschiebung über den Anfang oder das Ende des Recordset hinaus erfolgt ist.

Bevor Sie eine Funktionalität eines Recordset-Objekts verwenden, müssen Sie die Supports-Methode am Objekt aufrufen, um sicherzustellen, dass die Funktionalität unterstützt wird bzw. verfügbar ist. Sie dürfen die Funktionalität nicht verwenden, wenn die Supports-Methode „false“ zurückgibt. Sie können beispielsweise die MovePrevious-Methode nur verwenden, wenn Recordset.Supports(adMovePrevious)True zurückgegeben wird. Andernfalls wird ein Fehler angezeigt, da das Recordset-Objekt möglicherweise geschlossen wurde und die Funktionalität auf der Instanz nicht mehr verfügbar war. Wenn ein Feature, an dem Sie interessiert sind, nicht unterstützt wird, gibt Supports ebenso „false“ zurück. In diesem Fall sollten Sie die entsprechende Eigenschaft oder Methode im Recordset-Objekt nicht aufrufen.

Recordset-Objekte können zwei Arten von Aktualisierungen unterstützen: sofort und batchweise. Bei sofortiger Aktualisierung werden alle Änderungen an Daten sofort in die zugrunde liegende Datenquelle geschrieben, sobald Sie die Update-Methode aufrufen. Sie können auch Arrays von Werten als Parameter mit den Methoden AddNew und Update übergeben und gleichzeitig mehrere Felder in einem Datensatz aktualisieren.

Wenn ein Anbieter die Batchaktualisierung unterstützt, können Sie den Anbieter Cacheänderungen an mehreren Datensätze vornehmen lassen und diese dann mit der UpdateBatch-Methode in einem einzigen Aufruf an die Datenbank übertragen. Dies gilt für Änderungen, die mit den Methoden AddNew, Update und Delete vorgenommen wurden. Nach dem Aufruf der UpdateBatch-Methode können Sie mit der Status-Eigenschaft nach allen Datenkonflikten suchen, um sie zu beheben.

Hinweis

Um eine Abfrage ohne Verwendung eines Command-Objekts auszuführen, übergeben Sie eine Abfragezeichenfolge an die Open-Methode eines Recordset-Objekts. Ein Command-Objekt ist jedoch erforderlich, wenn Sie den Befehlstext beibehalten und erneut ausführen möchten oder Abfrageparameter verwenden.

Die Mode-Eigenschaft regelt Zugriffsberechtigungen.

Die Fields-Sammlung ist das Standardelement des Recordset-Objekts. Daher sind die folgenden beiden Codeanweisungen gleichwertig.

Debug.Print objRs.Fields.Item(0)  ' Both statements print   
Debug.Print objRs(0)              '  the Value of Item(0).  

Wenn ein Recordset-Objekt prozessübergreifend übergeben wird, werden nur die rowset-Werte gemarshallt. Außerdem werden die Eigenschaften des Recordset-Objekts ignoriert. Während das Marshallen rückgängig gemacht wird, wird das rowset in einem neu erstellten Recordset-Objekt entpackt, dessen Eigenschaften ebenso auf die Standardwerte festgelegt sind.

Das Recordset-Objekt ist für die Skripterstellung sicher.

Dieser Abschnitt enthält das folgende Thema.

Weitere Informationen

Connection-Objekt (ADO)
Fields-Collection (ADO)
Properties-Collection (ADO)
Anhang A: Anbieter