Partager via


Accès aux lignes d'un jeu d'enregistrements hiérarchique (exemple)

L’exemple suivant montre les étapes nécessaires pour accéder aux lignes dans un Recordset hiérarchique :

  1. Les objets recordset des auteurs et des tables titleauthor sont liés par ID d’auteur.

  2. La boucle externe affiche le prénom et le nom de chaque auteur, son état et son identification.

  3. L’objet Recordset ajouté pour chaque ligne est récupéré à partir de la collection Fields et affecté à rstTitleAuthor.

  4. La boucle interne affiche quatre champs de chaque ligne dans Recordset ajouté.

La propriété StayInSync est définie sur false à des fins d’illustration, afin que vous puissiez voir le changement de chapitre explicitement dans chaque itération de la boucle externe. Pour rendre l’exemple de code plus efficace, vous pouvez déplacer l’affectation à l’étape 3 avant la première ligne à l’étape 2, de sorte que l’affectation n’est effectuée qu’une seule fois. Définissez ensuite la propriété StayInSync sur true, afin que rstTitleAuthor change implicitement et automatiquement vers le chapitre correspondant chaque fois que rst se déplace vers 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;Integrated Security=SSPI;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

Voir aussi

Présentation de la mise en forme des donnéesChamp ObjetChamps Collection (ADO)Grammaire formelle de la mise en forme des donnéesService Microsoft de mise en forme des données pour OLE DB (fournisseur de services ADO)Objet Recordset (ADO) Fournisseurs requis pour la mise en forme des données Clause AJOUTERCommandes de mise en forme en généralClause CALCULERFonctions Visual Basic for Applications