Accesso alle righe in un recordset gerarchico (esempio)

Nell'esempio seguente vengono illustrati i passaggi necessari per accedere alle righe in un recordset gerarchico:

  1. Gli oggetti Recordset degli autori e delle tabelle titleauthor sono correlati all'ID autore.

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

  3. L'oggetto Recordset accodato per ogni riga viene recuperato dall'insieme Fields e assegnato a rstTitleAuthor.

  4. Il ciclo interno visualizza quattro campi da ogni riga del recordset aggiunto.

La proprietà StayInSync è impostata su false ai fini dell'illustrazione, in modo che sia possibile visualizzare in modo esplicito il capitolo cambia in modo esplicito in 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 cambierà in modo implicito e automaticamente nel capitolo corrispondente ogni volta che la 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

Vedere anche

Raccolta di campi oggetto campo panoramica data shaping(ADO)Formal Shape Grammar Microsoft Data Shaping Service for OLE DB (ADO Service Provider)Recordset Object (ADO)Required Providers for Data Shape Command commands commands in GeneralShape COMPUTE clauseVisual Basic, Applications Edition functions