top
Loading...
DataShaping技術--數據構形所需的提供者
數據構形一般需要兩個提供者。服務提供者 OLE DB 的數據構形服務提供數據構形功能,而數據提供者,例如 SQL Server 的 OLE DB 提供者,則提供充填成形 Recordset 的數據行。

服務提供者的名稱可以指定為 Connection 對象 Provider 屬性的值,或連接字符串關鍵字“Provider=”。

數據提供者的名稱可以指定為“Data Provider”動態屬性的值,該動態屬性由 Data Shaping Service for OLE DB 添加到 Connection 對象 Properties 集合。或者也可以指定為連接字符串關鍵字“Data Provider=”。

如果沒有充填 Recordset(例如,如果成形 Recordset 的所有列均使用 NEW 關鍵字創建),則不需要數據提供者。在這種情況下指定“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”
常規 Shape 命令


“數據構形”定義了成形 Recordset 的列、由列代表的條目之間的關系以及數據充填到 Recordset 的方式。

成形的 Recordset 可以由如下類型的列組成:

列類型 說明
數據 由對數據提供者、表或以前成形 Recordset 使用查詢命令所返回的 Recordset 的字段。
子集 對另一個 Recordset 的引用,稱為“子集”。子集列使定義“父-子”關系成為可能,在這種關系中“父”是包含子集列的 Recordset,“子”是由子集代表的 Recordset。
合計 列的值通過對所有行執行“合計函數”獲得,或者是子 Recordset 的所有行的列。(請參閱下表中的合計函數。)
計算表達式 列的值通過對在 Recordset 的相同行中的列進行 Visual Basic for Applications 表達式的計算而獲得。表達式是 CALC 函數的參數。(請參閱下表中的計算表達式。)
新建 空的、虛構的字段,可在隨后充填數據。列使用 NEW 關鍵字定義。(請參閱下表中的 NEW 關鍵字。)


Shape 命令可以包含子句,指定針對基本數據提供者并將返回 Recordset 對象的查詢命令。查詢的語法取決于對基本數據提供者的要求。雖然 ADO 并不要求使用任何指定的查詢語言,但通常是使用結構化查詢語言 (SQL)。

您可以使用 SQL JOIN 子句關聯兩個表,但是,分級 Recordset 可以更有效地表達信息。由 JOIN 創建的 Recordset 的每行會多余地重復一個表中的信息。分級 Recordset 的多個子 Recordset 對象中,每個對象僅有一個父 Recordset。

Shape 命令可以僅由 Recordset 對象發出。

Shape 命令可以嵌套,即父命令或子命令本身可以是另一個 Shape 命令。

有關定位分級 Recordset 的詳細信息,請參閱訪問分級 Recordset 中的行。

有關語法正確的 Shape 命令的詳細信息,請參閱形狀語法格式。

合計函數、CALC 函數和 NEW 關鍵字

數據構形支持如下函數。chapter-alias 是指定給包含了將被操作列的子集名稱。

chapter-alias(子集-別名)可以是完整的,由指向包含 column-name 的子集的每個子集列名稱組成,全部用句號分隔。例如,如果父子集 chap1 包含擁有數量列 amt 的子子集,則完整名即是 chap1.chap2.amt。

合計函數 說明
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]) 計算指定別名或列中行的數量。
STDEV(chapter-alias.column-name) 計算指定列中的標準偏差。
ANY(chapter-alias.column-name) 列的值(列的值在所有行均相同)。

計算表達式 說明
CALC(expression) 計算任意表達式,但僅針對包含 CALC 函數的 Recordset 行。可以是任何 Visual Basic for Applications (VBA) 函數或表達式。

NEW 關鍵字 說明
NEW (field type [(width | scale ][,precision])] 將指定類型的空列添加到 Recordset。

北斗有巢氏 有巢氏北斗