Freigeben über


Zugreifen auf Zeilen in einem hierarchischen Recordset

Gilt für: Access 2013, Office 2013

Das folgende Beispiel zeigt die notwendigen Schritte zum Zugreifen auf Zeilen in einem hierarchischen Recordset:

  1. Recordset objects from the authors and titleauthor tables are related by author ID.

  2. In der äußeren Schleife werden der Vor- und Nachname, der Status und die Identifikation jedes Autors angezeigt.

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

  4. In der inneren Schleife werden vier Felder aus jeder Zeile im angefügten Recordset angezeigt.

Hinweis

Die StayInSync-Eigenschaft ist zur Veranschaulichung auf FALSE festgelegt, sodass Sie sehen können, dass sich das Kapitel in jeder Iteration der äußeren Schleife explizit ändert. Das Beispiel ist jedoch effizienter, wenn die Zuweisung in Schritt 3 vor die erste Zeile in Schritt 2 verschoben wird, sodass die Zuweisung nur ein Mal ausgeführt wird. Legen Sie die StayInSync-Eigenschaft auf TRUE fest, sodass rstTitleAuthor implizit und automatisch in das entsprechende Kapitel wechselt, wenn rst in eine neue 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;" & _ 
 "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