以下范例说明了访问分级 Recordset 中的行的所需步骤:
authors 和 titleauthors 表中的 Recordset 对象通过 author 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;" & _
"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
形状语法格式
以下是创建 Shape 命令的规范语法。
必需的语法项为尖括号 (“<>”) 界定的文本字符串。
可选项由方括号 (“[ ]”) 界定。
任选其一项用竖线 (“|”) 隔开。
重复的可选项用省略号 (“...”) 表示。
Alpha 表示字母字符串。
Digit 表示数字字符串。
Unicode-digit 表示由 unicode 数字组成的字符串。
所有其他项目均为文字。
项目 定义
SHAPE [ ][[AS] ]][]