以下范例說明了訪問分級 Recordset 中的行的所需步驟:
authors 和 titleauthors 表中的 Recordset 對象通過 author ID 進(jìn)行關(guān)聯(lián)。
外循環(huán)顯示每個作者的姓名、州/省別和身份。
每行所追加的 Recordset 都從 Fields 集合進(jìn)行檢索并分配給 rstTitleAuthor。
內(nèi)循環(huán)顯示追加的 Recordset 中每行的四個字段。 (StayInSync 屬性是為了說明而設(shè)置為 FALSE 的,以便您可以在每次外循環(huán)中顯性地看見子集更改。但是,如果在步驟 3 中的賦值被移動到步驟 2 第一行之前,范例將會更有效,所以賦值只執(zhí)行一次。然后將 StayInSync 屬性設(shè)為 TRUE,這樣無論 rst 何時移動到新行,rstTitleAuthor 都將隱性和自動地更改為相應(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
形狀語法格式
以下是創(chuàng)建 Shape 命令的規(guī)范語法。
必需的語法項(xiàng)為尖括號 (“<>”) 界定的文本字符串。
可選項(xiàng)由方括號 (“[ ]”) 界定。
任選其一項(xiàng)用豎線 (“|”) 隔開。
重復(fù)的可選項(xiàng)用省略號 (“...”) 表示。
Alpha 表示字母字符串。
Digit 表示數(shù)字字符串。
Unicode-digit 表示由 unicode 數(shù)字組成的字符串。 所有其他項(xiàng)目均為文字。
項(xiàng)目 定義 <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 表達(dá)式,其操作數(shù)是相同行中其他非 CALC 列。
|