Recordset2.NextRecordset-Methode (DAO)
Gilt für: Access 2013, Office 2013
Syntax
Ausdruck . NextRecordset
Ausdruck Eine Variable, die ein Recordset2-Objekt darstellt.
Rückgabewert
Boolesch
Bemerkungen
In einem ODBCDirect-Arbeitsbereich können Sie ein Recordset öffnen, das mehr als eine Auswahlabfrage im Quellargument von OpenRecordset enthält, oder die SQL-Eigenschaft eines QueryDef-Objekts mit Auswahlabfrage, wie im folgenden Beispiel gezeigt.
SELECT LastName, FirstName FROM Authors
WHERE LastName = 'Smith';
SELECT Title, ISBN FROM Titles
WHERE Pub_ID = 9999
Das zurückgegebene Recordset wird mit den Ergebnissen der ersten Abfrage geöffnet. Mit der NextRecordset-Methode können Sie die resultierenden Datensatzgruppen aus nachfolgenden Abfragen abrufen.
Sind mehrere Datensätze verfügbar (der OpenRecordset-Aufruf oder die SQL-Eigenschaft enthielt also eine weitere Auswahlabfrage), werden die von der nächsten Abfrage zurückgegebenen Datensätze in das Recordset geladen, und NextRecordset gibt True zurück, was die Verfügbarkeit der Datensätze angibt. Sind keine Datensätze mehr verfügbar (d. h. die Ergebnisse der letzten Auswahlabfrage wurden in das Recordset-Objekt geladen), dann gibt NextRecordset den Wert False zurück, und Recordset ist leer.
Sie können auch die Cancel-Methode verwenden, um den Inhalt eines Recordsets zu leeren. Mit Cancel werden auch die noch nicht geladenen Datensätze geleert.
Beispiel
Dieses Beispiel zeigt mit der NextRecordset-Methode die Daten aus einer SELECT-Verbundabfrage an. Die DefaultCursorDriver-Eigenschaft muss beim Ausführen solcher Abfragen auf dbUseODBCCursor festgelegt sein. Die NextRecordset-Methode gibt auch dann True zurück, wenn einige oder alle der SELECT-Anweisungen keine Datensätze zurückgeben; False wird erst zurückgegeben, nachdem jede einzelne SQL-Klausel überprüft wurde.
Sub NextRecordsetX()
Dim wrkODBC As Workspace
Dim conPubs As Connection
Dim rstTemp As Recordset2
Dim intCount As Integer
Dim booNext As Boolean
' Create ODBCDirect Workspace object and open Connection
' object. The DefaultCursorDriver setting is required
' when using compound SQL statements.
Set wrkODBC = CreateWorkspace("", _
"admin", "", dbUseODBC)
wrkODBC.DefaultCursorDriver = dbUseODBCCursor
' Note: The DSN referenced below must be set to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
Set conPubs = wrkODBC.OpenConnection("Publishers", , , _
"ODBC;DATABASE=pubs;DSN=Publishers")
' Construct compound SELECT statement.
Set rstTemp = conPubs.OpenRecordset("SELECT * " & _
"FROM authors; " & _
"SELECT * FROM stores; " & _
"SELECT * FROM jobs")
' Try printing results from each of the three SELECT
' statements.
booNext = True
intCount = 1
With rstTemp
Do While booNext
Debug.Print "Contents of recordset #" & intCount
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
booNext = .NextRecordset
Debug.Print " rstTemp.NextRecordset = " & _
booNext
intCount = intCount + 1
Loop
End With
rstTemp.Close
conPubs.Close
wrkODBC.Close
End Sub
Another way to accomplish the same task would be to create a prepared statement containing the compound SQL statement. The CacheSize property of the QueryDef object must be set to 1, and the Recordset object must be forward-only and read-only.
Sub NextRecordsetX2()
Dim wrkODBC As Workspace
Dim conPubs As Connection
Dim qdfTemp As QueryDef
Dim rstTemp As Recordset2
Dim intCount As Integer
Dim booNext As Boolean
' Create ODBCDirect Workspace object and open Connection
' object. The DefaultCursorDriver setting is required
' when using compound SQL statements.
Set wrkODBC = CreateWorkspace("", _
"admin", "", dbUseODBC)
wrkODBC.DefaultCursorDriver = dbUseODBCCursor
' Note: The DSN referenced below must be set to
' use Microsoft Windows NT Authentication Mode to
' authorize user access to the Microsoft SQL Server.
Set conPubs = wrkODBC.OpenConnection("Publishers", , , _
"ODBC;DATABASE=pubs;DSN=Publishers")
' Create a temporary stored procedure with a compound
' SELECT statement.
Set qdfTemp = conPubs.CreateQueryDef("", _
"SELECT * FROM authors; " & _
"SELECT * FROM stores; " & _
"SELECT * FROM jobs")
' Set CacheSize and open Recordset object with arguments
' that will allow access to multiple recordsets.
qdfTemp.CacheSize = 1
Set rstTemp = qdfTemp.OpenRecordset(dbOpenForwardOnly, _
dbReadOnly)
' Try printing results from each of the three SELECT
' statements.
booNext = True
intCount = 1
With rstTemp
Do While booNext
Debug.Print "Contents of recordset #" & intCount
Do While Not .EOF
Debug.Print , .Fields(0), .Fields(1)
.MoveNext
Loop
booNext = .NextRecordset
Debug.Print " rstTemp.NextRecordset = " & _
booNext
intCount = intCount + 1
Loop
End With
rstTemp.Close
qdfTemp.Close
conPubs.Close
wrkODBC.Close
End Sub