レコード グループを集計する
維持管理される集計の使用 への移動
デフォルトでは、保守されている集約は計算され、クライアント データセットにおけるすべてのレコードが集計されます。 ただし、代わりに、グループ内のレコード群を集計するよう指定することもできます。 これにより、共通フィールド値を共有するレコード グループの小計など、中間集計を提供することができます。 あるレコードのグループに対して保守する集約を指定するには、その前に、適切なグループ化をサポートするためのインデックスを使用しなければなりません。
集計の目的に合うようにデータをグループ化するようインデックスが整ったら、集約のプロパティ IndexName および GroupingLevel を指定して、使用するインデックスと、そのインデックスのどのグループまたはサブグループによって集計するレコードを定義するのかを示します。
たとえば、SalesRep によってグループ化され、さらに SalesRep の中で Customer によってグループ化されている、受注テーブルからの一部分を考えてみましょう:
SalesRep | Customer | OrderNo | Amount |
---|---|---|---|
1 |
1 |
5 |
100 |
1 |
1 |
2 |
50 |
1 |
2 |
3 |
200 |
1 |
2 |
6 |
75 |
2 |
1 |
1 |
10 |
2 |
3 |
4 |
200 |
次のコードは、各営業担当の総売り上げ金額を示す、保守された集約を設定します。
Delphi:
Agg.Expression := 'Sum(Amount)';
Agg.IndexName := 'SalesCust';
Agg.GroupingLevel := 1;
Agg.AggregateName := 'Total for Rep';
C++:
Agg->Expression = "Sum(Amount)";
Agg->IndexName = "SalesCust";
Agg->GroupingLevel = 1;
Agg->AggregateName = "Total for Rep";
指定された営業担当者の各顧客を集計する、集約を追加するには、保守される集約をレベル 2 で作成します。
レコード グループを集計する保守された集約は、特定のインデックスを関連づけられます。 Aggregates プロパティは、別のインデックスを使用する集約を保持することができます。 しかし、データセット全体を集計する集約と、現在のインデックスを使用する集約のみが有効です。 現在のインデックスを変更すると、どの集約が有効かが変わります。 ある時点でどの集約が有効かを決定するには、ActiveAggs プロパティを使用します。