|          
以下范例说明了访问分级 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-command>
 SHAPE [<table-exp> ][[AS] <alias>]][<shape-action>]
 
 <table-exp>
 {<native-sql-statement>} |(<shape-command>) |
 TABLE <quoted-name> |
 <quoted-name>
 
 <shape-action>
 APPEND <aliased-field-list> | COMPUTE <aliased-field-list>
 [BY <field-list> ][[AS] <alias>]]
 
 <aliased-field-list>
 <aliased-field> [, <aliased-field...]
 
 <aliased-field>
 <field-exp> [[AS] <alias>]
 
 <field-exp>
 (<relation-exp>) |<calculated-exp>
 
 <relation_exp>
 <table-exp> [[AS] <alias>] RELATE <relation-cond-list>
 
 <relation-cond-list>
 <relation-cond> [, <relation-cond>...]
 
 <relation-cond>
 <field-name> TO <child-ref>
 
 <child-ref>
 <field-name> | PARAMETER <param-ref>
 
 <param-ref>
 <number>
 
 <field-list>
 <field-name [, <field-name>]
 
 <calculated-exp>
 SUM(<qualified-field-name>) |AVG(<qualified-field-name>) |
 MIN(<qualified-field-name>) |
 MAX(<qualified-field-name>) |
 COUNT(<alias> | <qualified-field-name>) |
 STDEV(<qualified-field-name>) |
 ANY(<qualified-field-name>) |
 CALC(<expresion>)
 
 <qualified-field-name>
 <alias>.[<alias>...]<field-name>
 
 <alias>
 <quoted-name>
 
 <field-name>
 <quoted-name>
 
 <quoted-name>
 "<string>" | '<string>' |
 [<string>] |
 <name>
 
 <name>
 alpha [ alpha | digit | _ | # ...]
 
 <number>
 digit [digit...]
 
 <string>
 unicode-char [unicode-char...]
 
 <expression>
 Visual Basic for Applications 表达式,其操作数是相同行中其他非 CALC 列。
 
 
 |