Open-Methode (ADO-Recordset)

Öffnet einen Cursor auf einem Recordset-Objekt.

Syntax

  
recordset.Open Source, ActiveConnection, CursorType, LockType, Options  

Parameter

Quelle
Optional. Eine Variant, die für ein gültiges Command-Objekt, eine SQL-Anweisung, einen Tabellennamen, einen gespeicherten Prozeduraufruf, eine URL oder den Namen einer Datei oder ein Stream-Objekt mit einem beständig gespeicherten Recordset ausgewertet wird.

ActiveConnection
Optional. Entweder eine Variant, die einen gültigen Namen einer Connection-Objektvariable auswertet, oder eine String mit ConnectionString-Parametern.

CursorType
Optional. Ein CursorTypeEnum-Wert, der den Typ des Cursors bestimmt, den der Anbieter beim Öffnen von Recordset verwenden sollte. Der Standardwert ist adOpenForwardOnly.

LockType
Optional. Ein LockTypeEnum-Wert, der bestimmt, welche Art von Sperre (Parallelität) der Anbieter beim Öffnen von Recordset verwenden sollte. Der Standardwert ist adLockReadOnly.

Optionen
Optional. Ein Long-Wert, der angibt, wie der Anbieter das Source-Argument auswerten soll, wenn es etwas anderes als ein Command-Objekt darstellt, oder dass ein Recordset aus einer Datei wiederhergestellt werden soll, in der es zuvor gespeichert wurde. Kann mindestens ein CommandTypeEnum- oder ExecuteOptionEnum-Wert sein, der mit einem bitweisen ODER-Operator kombiniert werden kann.

Hinweis

Wenn Sie ein Recordset aus einem Stream öffnen, der ein persistentes Recordset enthält, hat die Verwendung eines ExecuteOptionEnum-Werts von adAsyncFetchNonBlocking keine Auswirkung; der Abruf ist synchron und blockierend.

Hinweis

Die ExecuteOpenEnum-Werte von adExecuteNoRecords oder adExecuteStream dürfen nicht mit Open verwendet werden.

Bemerkungen

Der Standardcursor für ein ADO-Recordset ist ein schreibgeschützter Vorwärtscursor auf dem Server.

Mit der Methode Open an einem Recordset-Objekt wird ein Cursor geöffnet, der Datensätze aus einer Basistabelle, den Ergebnissen einer Abfrage oder einem zuvor gespeicherten Recordset darstellt.

Verwenden Sie das optionale Source-Argument, um eine Datenquelle mithilfe einer der folgenden Angaben festzulegen: eine Command-Objektvariable, eine SQL-Anweisung, eine gespeicherte Prozedur, einen Tabellennamen, eine URL oder einen vollständigen Dateinamen. Wenn Source ein Dateipfadname ist, kann es sich um einen vollständigen Pfad („c:\dir\file.rst“), einen relativen Pfad („.. \file.rst“) oder eine URL (https://files/file.rst) handeln.

Es empfiehlt sich nicht, das Source-Argument der Open-Methode zu verwenden, um eine Aktionsabfrage auszuführen, die keine Datensätze zurückgibt, da es keine einfache Möglichkeit gibt, zu ermitteln, ob der Aufruf erfolgreich war. Das von einer solchen Abfrage zurückgegebene Recordset wird geschlossen. Um eine Abfrage auszuführen, die keine Datensätze zurückgibt, z. B. eine SQL INSERT-Anweisung, rufen Sie stattdessen die Execute-Methode eines Command-Objekts oder die Execute-Methode eines Connection-Objekts auf.

Das ActiveConnection-Argument entspricht der ActiveConnection-Eigenschaft und gibt an, in welcher Verbindung das Recordset-Objekt geöffnet werden soll. Wenn Sie eine Verbindungsdefinition für dieses Argument übergeben, öffnet ADO eine neue Verbindung mithilfe der angegebenen Parameter. Nachdem Sie das Recordset mit einem clientseitigen Cursor geöffnet haben, indem Sie die CursorLocation-Eigenschaft auf adUseClient festlegen, können Sie den Wert dieser Eigenschaft ändern, um Updates an einen anderen Anbieter zu senden. Sie können diese Eigenschaft auch auf Nothing (in Microsoft Visual Basic) oder NULL festlegen, um das Recordset von einem Anbieter zu trennen. Das Ändern von ActiveConnection für einen serverseitigen Cursor generiert jedoch einen Fehler.

Für die anderen Argumente, die direkt den Eigenschaften eines Recordset-Objekts entsprechen (Source, CursorType und LockType), ist die Beziehung der Argumente zu den Eigenschaften wie folgt:

  • Die Eigenschaft ist „Lesen/Schreiben“, bevor das Recordset-Objekt geöffnet wird.

  • Die Eigenschafteneinstellungen werden verwendet, es sei denn, Sie übergeben die entsprechenden Argumente beim Ausführen der Open-Methode. Wenn Sie ein Argument übergeben, wird die entsprechende Eigenschaftseinstellung außer Kraft gesetzt, und die Eigenschaftseinstellung wird mit dem Argumentwert aktualisiert.

  • Nach dem Öffnen des Recordset-Objekts werden diese Eigenschaften schreibgeschützt.

Hinweis

Die ActiveConnection-Eigenschaft ist schreibgeschützt für Recordset-Objekte, deren Source-Eigenschaft auf ein gültiges Command-Objekt eingestellt ist, selbst wenn das Recordset-Objekt nicht offen ist.

Wenn Sie ein Command-Objekt im Source-Argument übergeben und auch ein ActiveConnection-Argument übergeben, tritt ein Fehler auf. Die ActiveConnection-Eigenschaft des Command-Objekts muss bereits auf ein gültiges Connection-Objekt oder eine Verbindungszeichenfolge festgelegt werden.

Wenn Sie etwas anderes als ein Command-Objekt im Source-Argument übergeben, können Sie das Options-Argument verwenden, um die Auswertung des Source-Arguments zu optimieren. Wenn das Options-Argument nicht definiert ist, können Leistungseinbußen zu verzeichnen sein, da ADO Aufrufe an den Anbieter vornehmen muss, um festzustellen, ob das Argument eine SQL-Anweisung, eine gespeicherte Prozedur, eine URL oder ein Tabellenname ist. Wenn Sie wissen, welchen Source-Typ Sie verwenden, weist das Argument Options den ADO an, direkt zum relevanten Code zu springen. Wenn das Argument Options dem Source-Typ nicht entspricht, tritt ein Fehler auf.

Wenn Sie ein Stream-Objekt im Source-Argument übergeben, dürfen Sie keine Informationen an die anderen Argumente übergeben. Andernfalls wird ein Fehler generiert. Die ActiveConnection-Informationen werden nicht beibehalten, wenn ein Recordset über einen Stream geöffnet wird.

Die Standardeinstellung für das Argument Options ist adCmdFile, wenn dem Recordset keine Verbindung zugeordnet ist. Dies ist in der Regel der Fall für beständig gespeicherte Recordset-Objekte.

Wenn die Datenquelle keine Datensätze zurückgibt, legt der Anbieter sowohl die BOF- als auch die EOF-Eigenschaften auf True fest, und die aktuelle Datensatzposition wird nicht definiert. Sie können diesem leeren Recordset-Objekt weiterhin neue Daten hinzufügen, wenn der Cursortyp es zulässt.

Wenn Sie Ihre Vorgänge über ein geöffnetes Recordset-Objekt abgeschlossen haben, verwenden Sie die Close-Methode, um alle zugeordneten Systemressourcen freizugeben. Durch Schließen eines Objekts wird es nicht aus dem Arbeitsspeicher entfernt. Sie können die Eigenschafteneinstellungen ändern und die Open-Methode verwenden, um sie später erneut zu öffnen. Um ein Objekt vollständig aus dem Arbeitsspeicher zu entfernen, legen Sie die Objektvariable auf Nothing fest.

Bevor die ActiveConnection-Eigenschaft festgelegt wird, rufen Sie Open ohne Operanden auf, um eine Instanz eines Recordset-Objekts zu erstellen, das durch Anfügen von Feldern an die RecordsetFields-Sammlung erstellt wird.

Wenn Sie die CursorLocation-Eigenschaft auf adUseClient festgelegt haben, können Sie Zeilen asynchron auf zwei Arten abrufen. Die empfohlene Methode besteht darin, Options auf adAsyncFetch festzulegen. Alternativ können Sie die dynamische Eigenschaft „Asynchronous Rowset Processing“ in der Properties-Sammlung verwenden. Dabei können allerdings verwandte abgerufene Ereignisse verloren gehen, wenn Sie den Options-Parameter nicht auf adAsyncFetch festlegen.

Hinweis

Hintergrundabrufe im MS Remote-Anbieter werden nur über den Parameter Optionen der Open-Methode unterstützt.

Hinweis

URLs, die das HTTP-Schema verwenden, rufen automatisch den Microsoft OLE DB-Anbieter für Internet-Publishing auf. Weitere Informationen finden Sie unter Absolute und relative URLs.

Bestimmte Kombinationen von CommandTypeEnum- und ExecuteOptionEnum-Werten sind ungültig. Informationen zu nicht kombinierbaren Optionen finden Sie in den Themen für ExecuteOptionEnum und CommandTypeEnum.

Gilt für

Recordset-Objekt (ADO)

Weitere Informationen

Open- und Close-Methode – Beispiel (VB)
Open- und Close-Methode – Beispiel (VBScript)
Open- und Close-Methode – Beispiel (VC++)
Save- und Open-Methode – Beispiel (VB)
Open-Methode (ADO-Verbindung)
Open-Methode (ADO Record)
Open-Methode (ADO-Datenstrom)
OpenSchema-Methode
Save-Methode