Accès à des lignes dans un recordset hiérarchique
S’applique à : Access 2013, Office 2013
L’exemple suivant illustre les étapes nécessaires pour accéder aux lignes d’un objet Recordset hiérarchique :
Les objets Recordset provenant des tables authors et titleauthor sont liés par l'ID d'auteur.
La boucle externe affiche le prénom et le nom de chaque auteur, ainsi que son état et son identification.
L'objet Recordset ajouté pour chaque ligne est extrait de la collection Fields et affecté à rstTitleAuthor.
La boucle interne affiche quatre champs de chaque ligne dans l'objet Recordset ajouté.
Remarque
La propriété StayInSync a la valeur FALSE à des fins d’illustration, ce qui vous permet de voir le changement de chapitre explicitement dans chaque itération de la boucle externe. Toutefois, l’exemple sera plus efficace si l’affectation à l’étape 3 est déplacée avant la première ligne de l’étape 2, de sorte que l’affectation ne soit effectuée qu’une seule fois. Définissez la propriété StayInSync sur TRUE, afin que rstTitleAuthor passe implicitement et automatiquement au chapitre correspondant chaque fois que rst passe à une nouvelle ligne.
Exemple
Sub datashape()
Dim cnn As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim rstTitleAuthor As New ADODB.Recordset
cnn.Provider = "MSDataShape"
cnn.Open "Data Provider=MSDASQL;" & _
"Data Source=SRV;" & _
"User Id=MyUserName;Password=MyPassword;Database=Pubs"
' STEP 1
rst.StayInSync = FALSE
rst.Open "SHAPE {select * from authors} " & _
"APPEND ({select * from titleauthor} " & _
"RELATE au_id TO au_id) AS chapTitleAuthor", _
cnn
' STEP 2
While Not rst.EOF
Debug.Print rst("au_fname"), rst("au_lname"), _
rst("state"), rst("au_id")
' STEP 3
Set rstTitleAuthor = rst("chapTitleAuthor").Value
' STEP 4
While Not rstTitleAuthor.EOF
Debug.Print rstTitleAuthor(0), rstTitleAuthor(1), _
rstTitleAuthor(2), rstTitleAuthor(3)
rstTitleAuthor.MoveNext
Wend
rst.MoveNext
Wend
End Sub