Reports for WinForms
集計の使用
C1PrintDocument の使い方 > データ連結 > データ連結のサンプル > 集計の使用

次のコードは、典型的なグループ化の使用方法を示します。

Visual Basic コードの書き方

Visual Basic
コードのコピー
' 各グループで繰り返されるレンダリング領域を作成します:
Dim ra As C1.C1Preview.RenderArea = New C1.C1Preview.RenderArea
ra.Style.Borders.All = New C1.C1Preview.LineDef("2mm", Color.Blue)
ra.DataBinding.DataSource = MyData.Generate(20, 0, True)
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value")
 
' 各グループ内の IntValue フィールドの合計を計算する集計を作成します:
Dim agg As C1.C1Preview.DataBinding.Aggregate = New C1.C1Preview.DataBinding.Aggregate("Group_IntValue")
 
' 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value"
 
'集計がグループ範囲を持つことを指定します:
agg.Running = C1.C1Preview.DataBinding.RunningEnum.Group
 
'  集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding
 
' 集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg)
 
' ドキュメント全体の IntValue フィールドの合計を計算する集計を作成します:
agg = New C1.C1Preview.DataBinding.Aggregate("Total_IntValue")
 
' 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value"
 
' 集計がドキュメント範囲を持つことを指定します:
agg.Running = C1.C1Preview.DataBinding.RunningEnum.All
 
' 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding
 
' 集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg)
 
' グループヘッダーを作成します:
Dim rt As C1.C1Preview.RenderText = New C1.C1Preview.RenderText
rt.Text = "GroupId: [Fields!GroupId.Value]"
rt.Style.BackColor = Color.Yellow
ra.Children.Add(rt)
 
' このレンダリングテキストは、グループレコードを出力します。コードからわかるように、グループ集計値はグループフッターだけでなく、グループヘッダーおよびグループ詳細でも参照できます:
rt = New C1.C1Preview.RenderText
rt.Text = "GroupId:
[Fields!GroupId.Value]\rIntValue:[Fields!IntValue.Value]\rGroup_IntValue:[Aggregates!Group_IntValue.Value]\rTotal_IntValue:[Aggregates!Total_IntValue.Value]\rTatalNested_IntValue:[Aggregates!TatalNested_IntValue.Value]"

rt.Style.Borders.Bottom = C1.C1Preview.LineDef.Default
rt.Style.BackColor = Color.FromArgb(200, 210, 220)
rt.DataBinding.DataSource = ra.DataBinding.DataSource
ra.Children.Add(rt)
 
' この集計もグループに対して計算されますが、ネストされたオブジェクトのデータ連結に接続されます。
agg = New C1.C1Preview.DataBinding.Aggregate("TotalNested_IntValue")
agg.ExpressionText = "Fields!IntValue.Value"
agg.Running = RunningEnum.All
agg.DataBinding = rt.DataBinding
doc.DataSchema.Aggregates.Add(agg)
 
'領域をドキュメントに追加します。
doc.Body.Children.Add(ra)

C# コードの書き方

C#
コードのコピー
//各グループで繰り返されるレンダリング領域を作成します:
RenderArea ra = new RenderArea();
ra.Style.Borders.All = new LineDef("2mm", Color.Blue);
ra.DataBinding.DataSource = MyData.Generate(20, 0, true);
ra.DataBinding.Grouping.Expressions.Add("Fields!GroupId.Value");
 
//各グループ内の IntValue フィールドの合計を計算する集計を作成します:
Aggregate agg = new Aggregate("Group_IntValue");
 
// 合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value";
 
// 集計がグループ範囲を持つことを指定します:
agg.Running = RunningEnum.Group;
 
//  集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding;
 
//  集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg);
 
// ドキュメント全体の IntValue フィールドの合計を計算する集計を作成します:
agg = new Aggregate("Total_IntValue");
 
//合計を計算する式を定義します:
agg.ExpressionText = "Fields!IntValue.Value";
 
// 集計がドキュメント範囲を持つことを指定します:
agg.Running = RunningEnum.All;
 
// 集計のデータソースを指定します:
agg.DataBinding = ra.DataBinding;
 
//集計をドキュメントに追加します。
doc.DataSchema.Aggregates.Add(agg);
 
// グループヘッダーを作成します:
RenderText rt = new RenderText();
rt.Text = "GroupId: [Fields!GroupId.Value]";
rt.Style.BackColor = Color.Yellow;
ra.Children.Add(rt);
 
// このレンダリングテキストは、グループレコードを出力します。コードからわかるように、グループ集計値はグループフッターだけでなく、グループヘッダーおよびグループ詳細でも参照できます:
rt = new RenderText();
rt.Text = "GroupId:
[Fields!GroupId.Value]\rIntValue:[Fields!IntValue.Value]\rGroup_IntValue:[Aggregates!Group_IntValue.Value]\rTotal_IntValue:[Aggregates!Total_IntValue.Value]\rTatalNested_IntValue:[Aggregates!TatalNested_IntValue.Value]";

rt.Style.Borders.Bottom = LineDef.Default;
rt.Style.BackColor = Color.FromArgb(200, 210, 220);
rt.DataBinding.DataSource = ra.DataBinding.DataSource;
ra.Children.Add(rt);
 
// この集計もグループに対して計算されますが、ネストされたオブジェクトのデータ連結に接続されます。
agg = new Aggregate("TotalNested_IntValue");
agg.ExpressionText = "Fields!IntValue.Value";
agg.Running = RunningEnum.All;
agg.DataBinding = rt.DataBinding;
doc.DataSchema.Aggregates.Add(agg);
 
//領域をドキュメントに追加します。
doc.Body.Children.Add(ra);

ドキュメントの aggregate コレクション(Aggregates)内で宣言せずに、データバインドされた C1PrintDocument で使用できる集計タイプもあることに注意してください。詳細や例については、データ集計トピックを参照してください。