以下范例說明了訪問分級(jí) Recordset 中的行的所需步驟:
1. | authors 和 titleauthors 表中的 Recordset 對(duì)象通過 author ID 進(jìn)行關(guān)聯(lián)。 |
2. | 外循環(huán)顯示每個(gè)作者的姓名、州/省別和身份。 |
3. | 每行所追加的 Recordset 都從 Fields 集合進(jìn)行檢索并分配給 rstTitleAuthor。 |
4. | 內(nèi)循環(huán)顯示追加的 Recordset 中每行的四個(gè)字段。 |
(StayInSync 屬性是為了說明而設(shè)置為 FALSE 的,以便您可以在每次外循環(huán)中顯性地看見子集更改。但是,如果在步驟 3 中的賦值被移動(dòng)到步驟 2 第一行之前,范例將會(huì)更有效,所以賦值只執(zhí)行一次。然后將 StayInSync 屬性設(shè)為 TRUE,這樣無論 rst 何時(shí)移動(dòng)到新行,rstTitleAuthor 都將隱性和自動(dòng)地更改為相應(yīng)的子集。)
范例
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;" & _
"DSN=vfox;uid=sa;pwd=vfox;database=pubs”
‘步驟 1
rst.StayInSync = FALSE
rst.Open "SHAPE {select * from authors}
APPEND ({select * from titleauthor}
RELATE au_id TO au_id) AS chapTitleAuthor",
cnn
‘步驟 2
While Not rst.EOF
Debug.Print rst("au_fname"), rst("au_lname"),
rst("state"), rst("au_id")
‘步驟 3
Set rstTitleAuthor = rst("chapTitleAuthor").Value
‘步驟 4
While Not rstTitleAuthor.EOF
Debug.Print rstTitleAuthor(0), rstTitleAuthor(1),
rstTitleAuthor(2), rstTitleAuthor(3)
rstTitleAuthor.MoveNext
Wend
rst.MoveNext
Wend
End Sub