访问分层 Recordset 中的行(示例)
以下示例显示访问分层 Recordset 中的行所需的步骤:
按作者 ID 关联 authors 和 titleauthor 表中的 Recordset 对象。
外部循环显示每个作者的名字和姓氏、国家和身份。
从 Fields 集合中检索每一行的追加 Recordset 并将其赋给 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;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 函数