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つの値を表示します。