Recordset2.NextRecordset, méthode (DAO)
S’applique à : Access 2013, Office 2013
Syntaxe
expression . NextRecordset
Expression Variable qui représente un objet Recordset2 .
Valeur renvoyée
Booléen
Remarques
Dans un espace de travail ODBCDirect, vous pouvez ouvrir un objet Recordset contenant plusieurs requêtes select dans l’argument source de OpenRecordset, ou la propriété SQL d’un objet QueryDef de requête select, comme dans l’exemple suivant.
SELECT LastName, FirstName FROM Authors
WHERE LastName = 'Smith';
SELECT Title, ISBN FROM Titles
WHERE Pub_ID = 9999
L'objet Recordset renvoyé s'ouvre en affichant les résultats de la première requête. Pour obtenir les jeux d'enregistrements résultant des requêtes suivantes, utilisez la méthode NextRecordset.
Si d'autres enregistrements sont disponibles (c'est-à-dire, si l'appel OpenRecordset ou la propriété SQL contenait une autre requête Sélection), les enregistrements renvoyés par la requête suivante sont chargés dans l'objet Recordset, et NextRecordset renvoie la valeur True, indiquant que les enregistrements sont disponibles. Si aucun autre enregistrement n'est disponible (c'est-à-dire, si les résultats de la dernière requête Sélection ont été chargés dans l'objet Recordset), NextRecordset renvoie la valeur False, et l'objet Recordset est vide.
Vous pouvez également utiliser la méthode Cancel pour vider un objet Recordset de son contenu. Toutefois, Cancel vide également les enregistrements supplémentaires qui n'ont pas encore été chargés.
Exemple
Cet exemple de code montre comment utiliser la méthode NextRecordset pour afficher les données d'une requête Sélection composée. La propriété DefaultCursorDriver doit avoir la valeur dbUseODBCCursor lors de l'exécution de requêtes de ce type. La méthode NextRecordset renvoie la valeur True même si l'ensemble ou une partie des instructions SELECT ne renvoie aucun enregistrement ; elle ne renvoie la valeur False qu'après que toutes les clauses SQL individuelles aient été contrôlées.
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
Pour effectuer cette tâche, il est également possible de créer une instruction préparée qui contient l'instruction SQL composée. La propriété CacheSize de l'objet QueryDef doit avoir la valeur 1, et l'objet Recordset doit être de type avant uniquement et en lecture seule.
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