人気ブログランキング | 話題のタグを見る
(.Net)AcriveReportsで行ごと、列ごと、全体の集計をしたい
今回出したいレポートは下記のよう感じです。
(.Net)AcriveReportsで行ごと、列ごと、全体の集計をしたい_e0091163_923475.jpg


青枠で囲っているところが、バインドする DataTable に入っている値です。
赤枠の部分を ActiveReports 側で集計させます。

デザイナでの配置は下記のような感じです。
(.Net)AcriveReportsで行ごと、列ごと、全体の集計をしたい_e0091163_924717.jpg


データは下記のように作成しています。(レポート作成部分です)
Dim frm As New frmReport()      'レポート結果表示するフォーム
Dim dtbl_age As New DataTable() 'レポートにバインドするデータ
Dim cl_age1 As New DataColumn("RowTitle")
Dim cl_age2 As New DataColumn("MaleNum", Type.GetType("System.Int32"))
Dim cl_age3 As New DataColumn("WomanNum", Type.GetType("System.Int32"))
Dim cl_age4 As New DataColumn("OtherNum", Type.GetType("System.Int32"))
dtbl_age.Columns.Add(cl_age1)
dtbl_age.Columns.Add(cl_age2)
dtbl_age.Columns.Add(cl_age3)
dtbl_age.Columns.Add(cl_age4)
'テストデータ作成
For i As Integer = 0 To 4
Dim row_age As DataRow = dtbl_age.NewRow()
row_age("RowTitle") = i.ToString() + "行目"
row_age("MaleNum") = i
row_age("WomanNum") = i + 1
row_age("OtherNum") = 1
dtbl_age.Rows.Add(row_age)
Next
レポート作成
Dim rpt_age As New AgeDistributionReport()
rpt_age.DataSource = dtbl_age
rpt_age.Run()
frm.Viewer.Document = rpt_age.Document
frm.Show()


最初は各行の合計を DataField で "= 列1のDataField + 列2のDataField + 列3DataField " という感じでやっていたのですが、これだと合計の合計(一番右下)が出せません。

ということで、下記のように新しい total というフィールドを作成し、1行フェッチするたびに、行の合計を total フィールドに格納するようにしました。

''' <summary>
''' 初期化
''' </summary>
Private Sub rptSummary_DataInitialize(ByVal sender As Object, ByVal e As System.EventArgs) Handles MyBase.DataInitialize
'total フィールド追加
Me.Fields.Add("total")
End Sub
 
''' <summary>
''' データをフェッチしたとき
''' </summary>
Private Sub rptSummary_FetchData(ByVal sender As Object, ByVal eArgs As DataDynamics.ActiveReports.ActiveReport3.FetchEventArgs) Handles MyBase.FetchData
'合計フィールドに1行の各列の合計値を格納
Me.Fields("total").Value = Me.Fields("MaleNum").Value + Me.Fields("WomanNum").Value + Me.Fields("OtherNum").Value
End Sub



また、最下行の合計行(これはグループセクションを使用)はそれぞれの DataField プロパティに下記のように設定し集計を指定します。
男の合計表示 → MaleNum
女の合計表示 → WomanNum
その他合計表示 → OtherNum
合計の合計表示 → total

なお、上記の4つともサマリーに関するプロパティは下記の通りです。
SummaryGroupu: GroupHeader1
SummaryRunning: Group
SummaryType: SubTotal
by jehoshaphat | 2009-03-06 00:22 | .Net開発


<< SEOにも役立つGoogleキ... (.Net)ActiveRep... >>