直播中
服務提供者的名稱可以指定為 Connection 對象 Provider 屬性的值,或連接字符串關(guān)鍵字“Provider=”。
數(shù)據(jù)提供者的名稱可以指定為“Data Provider”動態(tài)屬性的值,該動態(tài)屬性由 Data Shaping Service for OLE DB 添加到 Connection 對象 Properties 集合?;蛘咭部梢灾付檫B接字符串關(guān)鍵字“Data Provider=”。
如果沒有充填 Recordset(例如,如果成形 Recordset 的所有列均使用 NEW 關(guān)鍵字創(chuàng)建),則不需要數(shù)據(jù)提供者。在這種情況下指定“Data Provider=none”。
范例
Dim cnn As New ADODB.Connection
cnn.Provider = "MSDataShape"
cnn.Open "Data Provider=MSDASQL;DSN=vfox;uid=sa;pwd=vfox;database=pubs”
常規(guī) Shape 命令
“數(shù)據(jù)構(gòu)形”定義了成形 Recordset 的列、由列代表的條目之間的關(guān)系以及數(shù)據(jù)充填到 Recordset 的方式。
成形的 Recordset 可以由如下類型的列組成:
列類型 說明
數(shù)據(jù) 由對數(shù)據(jù)提供者、表或以前成形 Recordset 使用查詢命令所返回的 Recordset 的字段。
子集 對另一個 Recordset 的引用,稱為“子集”。子集列使定義“父-子”關(guān)系成為可能,在這種關(guān)系中“父”是包含子集列的 Recordset,“子”是由子集代表的 Recordset。
合計 列的值通過對所有行執(zhí)行“合計函數(shù)”獲得,或者是子 Recordset 的所有行的列。(請參閱下表中的合計函數(shù)。)
計算表達式 列的值通過對在 Recordset 的相同行中的列進行 Visual Basic for Applications 表達式的計算而獲得。表達式是 CALC 函數(shù)的參數(shù)。(請參閱下表中的計算表達式。)
新建 空的、虛構(gòu)的字段,可在隨后充填數(shù)據(jù)。列使用 NEW 關(guān)鍵字定義。(請參閱下表中的 NEW 關(guān)鍵字。)
Shape 命令可以包含子句,指定針對基本數(shù)據(jù)提供者并將返回 Recordset 對象的查詢命令。查詢的語法取決于對基本數(shù)據(jù)提供者的要求。雖然 ADO 并不要求使用任何指定的查詢語言,但通常是使用結(jié)構(gòu)化查詢語言 (SQL)。
您可以使用 SQL JOIN 子句關(guān)聯(lián)兩個表,但是,分級 Recordset 可以更有效地表達信息。由 JOIN 創(chuàng)建的 Recordset 的每行會多余地重復一個表中的信息。分級 Recordset 的多個子 Recordset 對象中,每個對象僅有一個父 Recordset。
Shape 命令可以僅由 Recordset 對象發(fā)出。
Shape 命令可以嵌套,即父命令或子命令本身可以是另一個 Shape 命令。
有關(guān)定位分級 Recordset 的詳細信息,請參閱訪問分級 Recordset 中的行。
有關(guān)語法正確的 Shape 命令的詳細信息,請參閱形狀語法格式。
合計函數(shù)、CALC 函數(shù)和 NEW 關(guān)鍵字
數(shù)據(jù)構(gòu)形支持如下函數(shù)。chapter-alias 是指定給包含了將被操作列的子集名稱。
chapter-alias(子集-別名)可以是完整的,由指向包含 column-name 的子集的每個子集列名稱組成,全部用句號分隔。例如,如果父子集 chap1 包含擁有數(shù)量列 amt 的子子集,則完整名即是 chap1.chap2.amt。
合計函數(shù) 說明
SUM(chapter-alias.column-name) 計算指定列中所有值的和。
AVG(chapter-alias.column-name) 計算指定列中所有值的平均值。
MAX(chapter-alias.column-name) 計算指定列中的最大值。
MIN(chapter-alias.column-name) 計算指定列中的最小值。
COUNT(chapter-alias[.column-name]) 計算指定別名或列中行的數(shù)量。
STDEV(chapter-alias.column-name) 計算指定列中的標準偏差。
ANY(chapter-alias.column-name) 列的值(列的值在所有行均相同)。
計算表達式 說明
CALC(expression) 計算任意表達式,但僅針對包含 CALC 函數(shù)的 Recordset 行??梢允侨魏?Visual Basic for Applications (VBA) 函數(shù)或表達式。
NEW 關(guān)鍵字 說明
NEW (field type [(width | scale ][,precision])] 將指定類型的空列添加到 Recordset。