Teilen über


NextRecordset-Methode (ADO)

Löscht das aktuelle Recordset-Objekt und gibt das nächste Recordset zurück, indem es durch eine Reihe von Befehlen voranschreitet.

Syntax

  
Set recordset2 = recordset1.NextRecordset(RecordsAffected )  

Rückgabewert

Gibt ein Recordset-Objekt zurück. Im Syntaxmodell kann recordset1 und recordset2 dasselbe Recordset-Objekt sein, oder Sie können separate Objekte verwenden. Wenn Sie separate Recordset-Objekte verwenden, generiert das Zurücksetzen der ActiveConnection-Eigenschaft für das ursprüngliche Recordset (recordset1), nachdem NextRecordset aufgerufen wurde, einen Fehler.

Parameter

RecordsAffected
Optional. Eine Long-Variable, an die der Anbieter die Anzahl der Datensätze zurückgibt, die vom aktuellen Vorgang betroffen waren.

Hinweis

Dieser Parameter gibt nur die Anzahl der von einem Vorgang betroffenen Datensätze zurück. Er gibt keine Anzahl von Datensätzen aus einer Select-Anweisung zurück, die zum Generieren des Recordset verwendet wird.

Bemerkungen

Verwenden Sie die NextRecordset-Methode, um die Ergebnisse des nächsten Befehls in einer zusammengesetzten Befehlsanweisung oder die Ergebnisse einer gespeicherten Prozedur, die mehrere Ergebnisse zurückgibt, zurückzugeben. Wenn Sie ein Recordset-Objekt basierend auf einer zusammengesetzten Befehlsanweisung (z. B. „SELECT * FROM table1; SELECT * FROM table2“) mithilfe der Execute-Methode für einen Befehl oder mithilfe der Open-Methode für ein Recordset öffnen, führt ADO nur den ersten Befehl aus und gibt die Ergebnisse an Recordset zurück. Um auf die Ergebnisse nachfolgender Befehle in der Anweisung zuzugreifen, rufen Sie die NextRecordset-Methode auf.

Solange zusätzliche Ergebnisse vorhanden sind und das Recordset, das die zusammengesetzten Anweisungen enthält, nicht getrennt oder über Prozessgrenzen hinweg gemarshallt wird, wird die NextRecordset-Methode weiterhin Recordset-Objekte zurückgeben. Wenn ein Befehl, der Zeilen zurückgibt, erfolgreich ausgeführt wird, aber keine Datensätze zurückgibt, wird das zurückgegebene Recordset-Objekt geöffnet, ist aber leer. Testen Sie diesen Fall, indem Sie überprüfen, ob die Eigenschaften BOF und EOF beide True sind. Wenn ein Befehl, der keine Zeilen zurückgibt, erfolgreich ausgeführt wird, wird das zurückgegebene Recordset-Objekt geschlossen, was Sie überprüfen können, indem Sie die State-Eigenschaft des Recordset testen. Wenn keine Ergebnisse vorhanden sind, wird Recordset auf Nothing festgelegt.

Die NextRecordset-Methode ist bei einem getrennten Recordset-Objekt, bei dem ActiveConnection auf Nothing (in Microsoft Visual Basic) oder NULL (in anderen Sprachen) festgelegt wurde, nicht verfügbar.

Wenn ein Bearbeitungsvorgang während des sofortigen Updatemodus ausgeführt wird, generiert das Aufrufen der NextRecordset-Methode einen Fehler. Rufen Sie zuerst die Update- oder CancelUpdate-Methode auf.

Um Parameter für mehrere Befehle in der zusammengesetzten Anweisung zu übergeben, indem Sie die Parameters-Auflistung ausfüllen oder ein Array mit dem ursprünglichen Open- oder Execute-Aufruf übergeben, müssen die Parameter in der Auflistung oder dem Array in derselben Reihenfolge wie ihre entsprechenden Befehle in der Befehlsabfolge sein. Sie müssen das Lesen aller Ergebnisse vor dem Lesen von Ausgabeparameterwerten beenden.

Ihr OLE DB-Anbieter bestimmt, wann jeder Befehl in einer zusammengesetzten Anweisung ausgeführt wird. Der Microsoft OLE DB-Anbieter für SQL Server führt beispielsweise alle Befehle in einem Batch aus, nachdem die zusammengesetzte Anweisung empfangen wurde. Die resultierenden Recordsets werden einfach zurückgegeben, wenn Sie NextRecordset aufrufen.

Andere Anbieter können jedoch den nächsten Befehl in einer Anweisung nur ausführen, nachdem „NextRecordset“ aufgerufen wurde. Wenn Sie das Recordset-Objekt explizit schließen, bevor Sie die gesamte Befehlsanweisung durchlaufen, führt ADO für diese Anbieter die verbleibenden Befehle nie aus.

Gilt für

Recordset-Objekt (ADO)

Weitere Informationen

NextRecordset-Methode – Beispiel (VB)
NextRecordset-Methode – Beispiel (VC++)