PrintDocument for WinForms
集計
PrintDocument ライブラリ > 集計

Aggregate types can be used in data-bound PrintDocument without the need to declare them in the document's aggregates collection (Aggregates).

For instance, if "Balance" is a data field in a data-bound document, the following RenderText can be used to print the total balance for the dataset:

Visual Basic コードの書き方

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

C# コードの書き方

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

The following new properties and methods were added to the DataSet and C1DataBinding types to support this feature:

Class Member Description
C1DataBinding Name property Gets or sets the name of the current C1DataBinding. That name can be used in aggregate functions to indicate which data binding the aggregate refers to.
DataSet Name property Gets or sets the name of the current DataSet. That name can be used in aggregate functions to indicate which data set the aggregate refers to.

All aggregate functions have the following format:

AggFunc(expression, scope)

where:

For example, if a dataset has the following fields, ID, GroupID, SubGroupID, NAME, Q, and records are grouped by GroupID and SubGroupID, the following document can be created:

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)
' データセット全体のQフィールドの合計を表示します。
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);

When the above document is generated, each instance of the raDetail group will show four values as follows: