访问层次记录集中的行

适用于:Access 2013、Office 2013

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

  1. authors(作者)和 titleauthor(标题作者)表中的 Recordset 对象通过作者 ID 进行关联。

  2. 外部循环显示每个作者的姓名、省/市/自治区和身份。

  3. 每行所追加的 Recordset 都从 Fields 集合进行检索并分配给 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;" & _ 
 "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