以下范例说明了访问分级 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 列。
|