Accesso alle righe in un recordset gerarchico (esempio)

L'esempio seguente illustra i passaggi necessari per accedere alle righe di un recordset gerarchico:

  1. Gli oggetti Recordset delle tabelle authors e titleauthor sono correlati in base all'ID autore.

  2. Il ciclo esterno visualizza il nome e cognome, lo stato e l'identificazione di ogni autore.

  3. L'oggetto Recordset aggiunto per ogni riga viene recuperato dalla raccolta Fields e assegnato a rstTitleAuthor.

  4. Il ciclo interno visualizza quattro campi da ogni riga dell'oggetto Recordset aggiunto.

La proprietà StayInSync è impostata su false a scopo illustrativo, in modo da poter visualizzare la modifica del capitolo in modo esplicito a ogni iterazione del ciclo esterno. Per rendere più efficiente l'esempio di codice, è possibile spostare l'assegnazione nel passaggio 3 prima della prima riga del passaggio 2, in modo che l'assegnazione venga eseguita una sola volta. Impostare quindi la proprietà StayInSync su true, in modo che rstTitleAuthor cambi in modo implicito e automatico nel capitolo corrispondente ogni volta che rst passa a una nuova riga.

Esempio

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

Vedi anche

Panoramica del data shapingOggetto FieldRaccolta Fields (ADO)Grammatica formale per ShapeServizio Microsoft di modifica della forma dei dati per OLE DB (provider di servizi ADO)Oggetto Recordset (ADO)Provider necessari per il data shapingClausola APPEND per ShapeComandi Shape in generaleClausola COMPUTE di ShapeFunzioni di Visual Basic, Applications Edition