資料成形範例
下列資料成形命令示範如何從 Northwind 資料庫中的 Customers 和 Orders 資料表建置階層式 Recordset。
SHAPE {SELECT CustomerID, ContactName FROM Customers}
APPEND ({SELECT OrderID, OrderDate, CustomerID FROM Orders} AS chapOrders
RELATE customerID TO customerID)
當此命令用來開啟 Recordset 物件 (如 Visual Basic 的資料成形範例所示),則會針對 Customers 資料表傳回的每個記錄建立章節 (chapOrders)。 本章包含 Orders 資料表所傳回的 Recordset 子集。 chapOrders 章節包含關於指定客戶所下訂單的所有要求資訊。 在此範例中,章節包含三個資料行:OrderID、OrderDate 和 CustomerID。
結果成形 Recordset 的前兩個項目如下所示:
CustomerID | ContactName | OrderID | OrderDate | CustomerID |
---|---|---|---|---|
ALFKI | Maria Ander | 10643 10692 10702 10835 10952 11011 |
1997-08-25 1997-10-03 1997-10-13 1998-01-15 1998-03-16 1998-04-09 |
ALFKI ALFKI ALFKI ALFKI ALFKI ALFKI |
ANATR | Ana Trujillo | 10308 10625 10759 10926 |
1996-09-18 1997-08-08 1997-11-28 1998-03-04 |
ANATR ANATR ANATR ANATR |
在 SHAPE 命令中,APPEND 是用來由 RELATE 子句建立與父 Recordset 相關的子 Recordset (當其在稍早討論的 SHAPE 關鍵字之後立即從提供者特定命令傳回)。 父系和子系通常至少有一個通用資料行:父系資料列中資料行的值與子系所有資料列中資料行的值相同。
第二種方式是使用 SHAPE 命令:也就是從子 Recordset 產生父 Recordset。 子 Recordset 中的記錄會分組 (通常是使用 BY 子句),並將一個資料列新增至子系中每個結果群組的父 Recordset。 如果省略 BY 子句,子 Recordset 會形成單一群組,而父 Recordset 將只包含一個資料列。 這適用於計算整個子 Recordset 上的「總計」匯總。
SHAPE 命令建構也可讓您以程式設計方式建立成形的 Recordset。 然後,您可以透過程式設計方式或透過適當的視覺控制項來存取 Recordset 元件。 圖形命令會像任何其他 ADO 命令文字一樣發出。 如需詳細資訊,請參閱一般 Shape 命令。
不論父 Recordset 的格式為何,都會包含一個章節資料行,用來將其與子 Recordset 產生關聯。 如果您想要的話,父 Recordset 也可以有包含匯總 (SUM、MIN、MAX 等) 子資料列的資料行。 父和子 Recordset 都可以有資料行,其中包含 Recordset 中資料列的運算式,以及一開始為空白的新資料行。
本節會繼續進行下列主題。