访问分层 Recordset 中的行(示例)

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

  1. 按作者 ID 关联 authors 和 titleauthor 表中的 Recordset 对象。

  2. 外部循环显示每个作者的名字和姓氏、国家和身份。

  3. Fields 集合中检索每一行的追加 Recordset 并将其赋给 rstTitleAuthor。

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

为了便于说明,将 StayInSync 属性设置为 false,以便你可以在外部循环的每次迭代中明显看到段更改。 若要提高代码示例的效率,可将步骤 3 中的赋值移动到步骤 2 的第一行前面,以便仅执行一次赋值。 然后将 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

另请参阅

数据整理概述Field 对象Fields 集合 (ADO)正式 Shape 语法用于 OLE DB 的 Microsoft 数据整理服务(ADO 服务提供程序)Recordset 对象 (ADO)数据整理所需的提供程序Shape APPEND 子句常用 Shape 命令Shape COMPUTE 子句Visual Basic for Applications 函数