在分层记录集中访问行(示例)

以下示例演示访问分层 Recordset中的行所需的步骤:

  1. 记录集 中的对象来自 作者标题作者 表,它们通过作者 ID 关联。

  2. 外部循环显示每个作者的名字和姓氏、状态和标识。

  3. 字段 集合中检索每个行的追加 记录集,并分配给 rstTitleAuthor

  4. 内部循环显示追加 Recordset中每行的四个字段。

为了演示目的,StayInSync 属性被设置为 false,以便可以在外部循环的每个迭代中显式查看章节更改。 若要使代码示例更高效,可以在步骤 2 的第一行之前在步骤 3 中移动分配,以便仅执行一次分配。 然后将 StayInSync 属性设置为 true,以便在 rst 移动到新行时,rstTitleAuthor 将隐式地自动更改为相应的章节。

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

另请参阅

数据整形概述字段对象字段集合(ADO)正式形状语法Microsoft 数据整形服务 OLE DB(ADO 服务提供程序)记录集对象(ADO)数据整形所需提供程序形状 APPEND 子句常规形状命令形状 COMPUTE 子句Visual Basic for Applications 函数