在分层记录集中访问行(示例)
以下示例演示访问分层 Recordset中的行所需的步骤:
记录集 中的对象来自 作者 和 标题作者 表,它们通过作者 ID 关联。
外部循环显示每个作者的名字和姓氏、状态和标识。
从 字段 集合中检索每个行的追加 记录集,并分配给 rstTitleAuthor。
内部循环显示追加 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 函数