Zugreifen auf Zeilen in einem hierarchischen Recordset (Beispiel)

Im folgenden Beispiel werden die Schritte gezeigt, die erforderlich sind, um auf Zeilen in einem hierarchischen Recordset zuzugreifen:

  1. Recordset-Objekte aus den Tabellen authors und titleauthor sind mit der Autor-ID verknüpft.

  2. Die äußere Schleife zeigt den Vor- und Nachnamen, den Status und die Autor-ID an.

  3. Das angefügte Recordset für jede Zeile wird aus der Fields-Sammlung abgerufen und rstTitleAuthor zugewiesen.

  4. Die innere Schleife zeigt vier Felder aus jeder Zeile im angefügten Recordset an.

Die StayInSync-Eigenschaft ist auf false festgelegt, sodass Sie die Kapiteländerung explizit in jeder Iteration der äußeren Schleife sehen können. Um das Codebeispiel effizienter zu gestalten, können Sie die Zuordnung in Schritt 3 vor der ersten Zeile in Schritt 2 verschieben, sodass die Zuordnung nur einmal ausgeführt wird. Legen Sie dann die StayInSync-Eigenschaft auf true fest, sodass rstTitleAuthor implizit und automatisch in das entsprechende Kapitel wechselt, wenn rst zu einer neuen Zeile wechselt.

Beispiel

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

Weitere Informationen

Datenstrukturierung – ÜbersichtField-ObjektFields-Sammlung (ADO)Formale Grammatik für StrukturenMicrosoft Data Shaping Service für OLE DB (ADO-Dienstanbieter)Recordset-Objekt (ADO)Erforderliche Anbieter für die DatenstrukturierungSHAPE APPEND-KlauselShape-Befehle im AllgemeinenSHAPE COMPUTE-KlauselVisual Basic for Applications-Funktionen