存取階層式資料錄集中的資料列 (範例)
下列範例顯示在階層式資料錄集中存取資料列所需的步驟:
authors 和 titleauthor 資料表中的 ordset 會依作者識別碼相關聯。
外部迴圈會顯示每個作者的名字和姓氏、狀態和識別。
系統會從 Fields 集合擷取每個資料列的附加資料錄集,並指派給 rstTitleAuthor。
內部迴圈會顯示附加資料錄集中每個資料列的四個欄位。
基於圖例的用途,StayInSync 屬性會設定為 false,因此您可以在外部迴圈的每個反覆項目中明確看到章節變更。 若要讓程式碼範例更有效率,您可以將步驟 3 中的指派移到步驟 2 中的第一行前面,讓指派僅執行一次。 然後,將 StayInSync 屬性設定為 true,讓 rstTitleAuthor 在 rst 每次移至新資料列時,都會隱含且自動地變更為對應的章節。
範例
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 文法Microsoft Data Shaping Service for OLE DB (ADO 服務提供者)Recordset 物件 (ADO)資料成形所需的提供者Shape APPEND Clause一般 Shape 命令Shape COMPUTE 子句Visual Basic for Applications 函式