Shape COMPUTE 句

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