Reports for WinForms
データ集計
C1PrintDocument の使い方 > データ連結 > データ集計

2010 v1 リリースで、新しい集計が Reports for WinForms に追加されました。これらの集計タイプは、ドキュメントの aggregates コレクション(Aggregates)内で宣言する必要なく、データバインドされた C1PrintDocument 内で使用できます。

たとえば、「残高」がデータバインドされたドキュメントのデータフィールドである場合、次のRenderText を使用し、このデータセットの合計残高を印刷できます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim rt As New RenderText("[Sum(""Fields!Balance.Value"")]")

C# コードの書き方

C#
コードのコピー
RenderText rt = new RenderText("[Sum(\"Fields!Balance.Value\")]");

この機能をサポートするために次の新しいプロパティとメソッドが DataSet および C1DataBinding 型に追加されました。

クラス メンバ 説明
C1DataBinding Name プロパティ 現在の C1DataBinding の名前を取得または設定します。この名前は、aggregate 関数で使用でき、aggregate が参照するデータバインディングを示します。
DataSet Name プロパティ 現在の DataSet の名前を取得または設定します。この名前は、aggregate 関数で使用でき、aggregate が参照するデータセットを示します。

すべての aggregate 関数は次の書式を持ちます。

AggFunc(expression, scope)

ここで

たとえば、データセットが ID、GroupID、SubGroupID、NAME、Q のフィールドを持ち、レコードが、GroupID と SubGroupID によってグループ化される場合、次のドキュメントが生成されます。

Visual Basic コードの書き方

Visual Basic
コードのコピー
Dim doc As New C1PrintDocument()
Dim raGroupId As New RenderArea()
' ...必要に応じて、raGroupId プロパティを設定します。...
raGroupID.DataBinding.DataSource = dataSet
raGroupID.DataBinding.Name = "GroupID"
raGroupID.DataBinding.Grouping.Expressions.Add("Fields!GroupID.Value")
 
Dim raSubGroupID As New RenderArea()
'...必要に応じて、raSubGroupID プロパティを設定します。...
raSubGroupID.DataBinding.DataSource = dataSet
raSubGroupID.DataBinding.Grouping.Expressions.Add("Fields!SubGroupID.Value")
raGroupID.Children.Add(raSubGroupID)
 
Dim raDetail As New RenderArea()
'  ...必要に応じて、raDetail プロパティを設定します。...
raDetail.DataBinding.DataSource = dataSet
raSubGroupID.Children.Add(raDetail)
 
'Q フィールドの値を表示します。
Dim rtQ As New RenderText()
rtQ.Text = "[Fields!Q.Value]"
raDetail.Children.Add(rtQ)
 
' ネストされたグループ(SubGroupID)の Q フィールドの合計を表示します。
Dim rtSumQ1 As New RenderText()
rtSumQ1.Text = "[Sum(""Fields!Q.Value"")]"
raDetail.Children.Add(rtSumQ1)
' GroupID の Q フィールドの合計を表示します。
Dim rtSumQ2 As New RenderText()
rtSumQ2.Text = "[Sum(\"Fields!Q.Value\", "\"GroupID\"")]"
raDetail.Children.Add(rtSumQ2)
' show TOTAL sum of Q field for the entire dataset:
Dim rtSumQ3 As New RenderText()
rtSumQ3.Text = "[Sum(\"Fields!Q.Value\", "\"DataSet\"")]"
raDetail.Children.Add(rtSumQ3)
doc.Body.Children.Add(raGroupId)

C# コードの書き方

C#
コードのコピー
C1PrintDocument doc = new C1PrintDocument();
RenderArea raGroupId = new RenderArea();
// ...必要に応じて、raGroupId プロパティを設定します。...
raGroupID.DataBinding.DataSource = dataSet;
raGroupID.DataBinding.Name = "GroupID";
raGroupID.DataBinding.Grouping.Expressions.Add("Fields!GroupID.Value");
 
RenderArea raSubGroupID = new RenderArea();
// ...必要に応じて、raSubGroupID プロパティを設定します。...
raSubGroupID.DataBinding.DataSource = dataSet;
raSubGroupID.DataBinding.Grouping.Expressions.Add("Fields!SubGroupID.Value");
raGroupID.Children.Add(raSubGroupID);
 
RenderArea raDetail = new RenderArea();
//  ...必要に応じて、raDetail プロパティを設定します。...
raDetail.DataBinding.DataSource = dataSet;
raSubGroupID.Children.Add(raDetail);
 
// Q フィールドの値を表示します。
RenderText rtQ = new RenderText();
rtQ.Text = "[Fields!Q.Value]";
raDetail.Children.Add(rtQ);
// ネストされたグループ(SubGroupID)の Q フィールドの合計を表示します。
RenderText rtSumQ1 = new RenderText();
rtSumQ1.Text = "[Sum(\"Fields!Q.Value\")]";
raDetail.Children.Add(rtSumQ1);
// GroupID の Q フィールドの合計を表示します。
RenderText rtSumQ2 = new RenderText();
rtSumQ2.Text = "[Sum(\"Fields!Q.Value\", "\"GroupID\"")]";
raDetail.Children.Add(rtSumQ2);
//データセット全体の Q フィールドの合計を表示します。
RenderText rtSumQ3 = new RenderText();
rtSumQ3.Text = "[Sum(\"Fields!Q.Value\", "\"DataSet\"")]";
raDetail.Children.Add(rtSumQ3);
 
doc.Body.Children.Add(raGroupId);

上のドキュメントが生成されるとき、raDetail グループの各インスタンスは次の4つの値を表示します。