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