Shape COMPUTE 句で、親 Recordset が生成されます。その列は、子 Recordset への参照で構成されます。オプションで、列の内容をチャプタ、新規、または計算結果にしたり、子の Recordset で集計関数を実行した結果または前にシェイプされた Recordset にすることができます。また、オプションの BY 句で指定された子 Recordset からの任意の列にすることができます。
構文
SHAPE child-command [AS] child-alias
COMPUTE child-alias [[AS] name], [appended-column-list]
[BY grp-field-list]
要素の説明
この句の要素は次の通りです。
child-command
次の 1 つから構成されます。
child-alias
child-command によって返される Recordset を参照するために使用されるエイリアス。child-alias は、COMPUTE 句の列の一覧に必須です。また、親と子の Recordset オブジェクトの関係を定義します。
appended-column-list
各要素が生成された親オブジェクト内の列を定義する一覧。各要素には、チャプタ列、新規の列、計算列、または子 Recordset で実行された集計関数の結果の値のどちらかが含まれます。
grp-field-list
親および子の Recordset オブジェクト内の列の一覧。子 Recordset内で行をどのようにグループ化するかを指定します。
grp-field-list 内のそれぞれの列に対して、親および子の Recordset オブジェクトには対応する列があります。親 Recordset のそれぞれの行に対して、grp-field-list の列には一意の値が含まれています。親の行によって参照される子 Recordset は、grp-field-list の列の値が親の行と同じである子の行のみから構成されます。
COMPUTE 句に BY 句がない場合は、子 Recordset 全体の集計値を含む単一の親行が存在します。BY 句がある場合は、複数の親行があり、それぞれ子 Recordset の参照および集計値が含まれている可能性があります。
操作
child-command がプロバイダに発行され、プロバイダは子 Recordset を返します。
COMPUTE 句で、子 Recordset への参照、1 つ以上の集計、計算式、または新規の列である親 Recordset を指定します。BY 句がある場合、定義する列も親 Recordset に追加されます。BY 句で、子 Recordset の行をグループ化する方法を指定します。
たとえば、State (州)、City (都市)、Population (人口) のフィールドで構成される、Demographics テーブルがあると想定します (人口の値は一例です)。
State | City | Population |
WA | Seattle | 700,000 |
OR | Medford | 200,000 |
OR | Portland | 600,000 |
CA | Los Angeles | 900,000 |
CA | San Diego | 400,000 |
WA | Tacoma | 500,000 |
OR | Corvallis | 300,000 |
ここで、次の Shape コマンドを発行します。
rst.Open "SHAPE {select * from demographics} AS rs " & _
"COMPUTE rs, SUM(rs.population) BY state", _
objConnection
このコマンドは、シェイプされた Recordset を 2 つのレベルで開きます。親レベルは、集計列 (SUM(rs.population)
)、子 Recordset (rs
) の参照列、および子 Recordset (state
) をグループ化した列を伴って生成された Recordset です。子レベルは、クエリ コマンド (select * from demographics
) によって返された Recordset です。
子 Recordset の詳細行は State (州) でグループ化されますが、特に決まった整列の順番はありません。つまり、グループはアルファベット順または数字順に並ぶわけではありません。
これで、開かれている親 Recordset 内を移動し、子の詳細 Recordset オブジェクトにアクセスできるようになります。「階層 Recordset 内の行へのアクセス」を参照してください。
親および子の詳細 Recordset の結果
親
SUM (rs.Population) | rs | State |
1,300,000 | child1 への参照 | CA |
1,200,000 | child2 への参照 | WA |
1,100,000 | child3 への参照 | OR |
Child1
State | City | Population |
CA | Los Angeles | 900,000 |
CA | San Diego | 400,000 |
Child2
State | City | Population |
WA | Seattle | 700,000 |
WA | Tacoma | 500,000 |
Child3
State | City | Population |
OR | Medford | 200,000 |
OR | Portland | 600,000 |
OR | Corvallis | 300,000 |