レポートを定義する
データ取得用ASP.NET Webサービスができたら、次にVisual Studioの画面上で[ファイル]‐[新しいWebサイト]から、新しいASP.NET Webサイトのプロジェクトを作成します。そして、ソリューションエクスプローラの[新しい項目の追加]で「ActiveReports 3.0ファイル」を選択し、ActiveReports帳票定義体を「Seikyu_Report.vb」という名前でプロジェクトに追加します。このとき、【図7】のようなメッセージが表示されますが、気にせず[はい]ボタンをクリックしてください。
サンプル帳票デザイン
帳票定義体がプロジェクトに追加できたら、ソリューションエクスプローラで帳票定義体「Seikyu_Report.vb」を右クリックしショートカットメニューを表示させ、[デザイナの表示]からActiveReportsの帳票デザイナを起動します。
なお、今回のサンプルは、前回のWindowsアプリ編の請求明細書と、同じデザインで作成します。重要なプロパティ値などは前回の記事を参照ください。
帳票定義体にコードを記述
ActiveReports帳票定義体は、「DataDyanmics.ActiveReports.ActiveReports3」を継承したクラスで、実行時の各種イベントに対してコードを組み込むことができます。
CZ0905Boundサンプルに組み込んだコードはリスト1になります。
Imports DataDynamics.ActiveReports Imports DataDynamics.ActiveReports.Document Public Class Seikyu_Report Inherits DataDynamics.ActiveReports.ActiveReport3 '#####ここに自動生成されたコードが記述されている Private m_Row As Integer Private Sub PageHeader_BeforePrint(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles PageHeader.BeforePrint '集計値を参照して、別の Field コントロールに値を設定します。 txtExcise.Value = CType(txtTotal.Value, Decimal) * 0.05 '消費税額 txtBillTotal.Value = CType(txtTotal.Value, Decimal) * 1.05 + _ CType(txtCarryOver.Value, Decimal) '請求額合計 End Sub Private Sub GroupHeader1_BeforePrint(ByVal sender As Object, _ ByVal e As System.EventArgs) _ Handles Bill_GroupHeader.BeforePrint m_Row = 0 End Sub Private Sub Detail_Format(ByVal sender As System.Object, _ ByVal e As System.EventArgs) _ Handles Detail.Format '行番号をインクリメントします。 m_Row = m_Row + 1 '1行ごとに背景色を切り替えます。 If (m_Row Mod 2) = 0 Then shpDetailBack1.BackColor = Drawing.Color.White '白色 Else shpDetailBack1.BackColor = Drawing.Color.LightYellow '黄色 End If End Sub End Class
Windowsアプリと異なりWebアプリの場合、ActiveReports帳票定義体はPartial Classを使った分離コード構造になっていません。そのため、リスト1では除外してありますが、Inherits文の直後にNewメソッド、Disposeメソッドおよび帳票定義用コード(分離コード構造の場合、designer.vbに書かれるコード)が含まれています。
自動生成されたコードを変更すると、帳票定義体をデザイナ表示できなくなったり、実行時にエラーになったりする可能性もあるので、変更しないように注意してください。そして、自動生成されたコードの後に次の2つの機能を実現するためのコードをそれぞれ記述します。
- ページヘッダで計算結果を印字
PageHeader.BeforePrintイベントで[PageHeader]セクションにある「今回消費税額」と「今回ご請求額」を計算しています。BeforePrintイベントで処理する事で印字内容に介入できます。 - 一覧部分の背景色を交互に切替え
[Detail]セクションの背景色を交互に切り替えるために、Detail.Formatイベントで背景色を設定しています。背景色の判断はグループごとの現在行の行位置が奇数か偶数かでおこなっているため、Bill_GroupHeader.BeforePrintイベントで行数を0にクリアしています。
以上が、帳票定義体クラスの準備作業となります。