Acessando linhas em um conjunto de registros hierárquico (exemplo)

O exemplo a seguir mostra as etapas necessárias para acessar linhas em um conjunto de registros hierárquico:

  1. Objetos de conjunto de registros dos autores e tabelas do titleauthor estão relacionados pela ID do autor.

  2. O loop externo exibe o nome, o estado e a identificação de cada autor.

  3. O Conjunto de Registros acrescentado para cada linha é recuperado da coleção Fields e atribuído a rstTitleAuthor.

  4. O loop interno exibe quatro campos de cada linha no Conjunto de Registros acrescentado.

A propriedade StayInSync é definida como false para fins de ilustração, para que você possa ver a alteração do capítulo explicitamente em cada iteração do loop externo. Para tornar o exemplo de código mais eficiente, você pode mover a atribuição na etapa 3 antes da primeira linha na etapa 2, para que a atribuição seja executada apenas uma vez. Em seguida, defina a propriedade StayInSync como true, de modo que rstTitleAuthor será alterado implicitamente e automaticamente para o capítulo correspondente sempre que rst for movido para uma nova linha.

Exemplo

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

Consulte Também

ADO (Coleção de Campos de Objeto de Campo) de FormaFormal da Microsoft Data Shaping Service for OLE DB (Provedor de Serviços do ADO)Provedores de Conjunto de Registros (ADO)necessários para comandos de forma de cláusula APPENDde forma de forma de dados em funções de computação de forma geral Visual Basic for Applications funções