データ整形の例
次のデータ シェイプ コマンドは、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 Example of Data Shapingに示されているように)、Customers テーブルから返された各レコードの章 (chapOrders) が作成されます。 この章は、Orders テーブルから返される Recordset のサブセットで構成されます。 chapOrders 章には、指定された顧客によって行われた注文に関する要求されたすべての情報が含まれています。 この例では、この章は、OrderID、OrderDate、CustomerID の 3 つの列で構成されています。
結果として得られた Recordset のシェイプ の最初の2つのエントリは次のとおりです。
顧客ID | 連絡先名 | 注文ID | 注文日 | 顧客ID |
---|---|---|---|---|
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 を使用して、親 Recordset に関連付けられた子 Recordset を、RELATE 句により作成します(以前に説明した SHAPE キーワードの直後にあるプロバイダー固有のコマンドから返されます)。 通常、親と子には少なくとも 1 つの列が共通しています。親の行の列の値は、子のすべての行の列の値と同じです。
SHAPE コマンドを使用する 2 番目の方法としては、子 Recordsetから親 Recordset を生成することです。 子 Recordset のレコードは、通常は BY 句を使用してグループ化され、子グループごとに 1 つの行が親 Recordset に追加されます。 BY 句を省略すると、Recordsetの子 は1つのグループを形成し、Recordsetの親 にはちょうど1行が含まれます。 これは、子 Recordset全体に対する "総計" 集計を計算する場合に便利です。
SHAPE コマンド コンストラクトを使用することで、の形状を持つ Recordsetをプログラムで作成することができます。 その後、プログラムまたは適切なビジュアル コントロールを使用して、Recordset のコンポーネントにアクセスできます。 図形コマンドは、他の ADO コマンド テキストと同様に発行されます。 詳細については、「図形コマンド一般 」を参照してください。
親 Recordset の形式にかかわらず、それには子 Recordsetに関連するためのチャプター列が含まれます。 望む場合は、親 Recordset に、子行に対する集計の列(例:SUM、MIN、MAX など)を含めることもできます。 親 Recordset と子供 Recordset の両方には、Recordsetの行に対する式を含む列や、新規で最初は空の列を持つことができます。
このセクションでは、次のトピックに進みます。