适用于:Access 2013、Office 2013
以下示例演示访问分层 Recordset 中的行所必需的步骤:
authors(作者)和 titleauthor(标题作者)表中的 Recordset 对象通过作者 ID 进行关联。
外部循环显示每个作者的姓名、省/市/自治区和身份。
每行所追加的 Recordset 都从 Fields 集合进行检索并分配给 rstTitleAuthor。
内循环显示追加的 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;" & _
"User Id=MyUserName;Password=MyPassword;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