Shoeisha Technology Media

CodeZine(コードジン)

特集ページ一覧

帳票Webアプリ実践構築ガイド
ActiveReports for .NETを使いこなす!~その2

  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加
2009/06/12 15:00
目次

レポートを定義する

 データ取得用ASP.NET Webサービスができたら、次にVisual Studioの画面上で[ファイル]‐[新しいWebサイト]から、新しいASP.NET Webサイトのプロジェクトを作成します。そして、ソリューションエクスプローラの[新しい項目の追加]で「ActiveReports 3.0ファイル」を選択し、ActiveReports帳票定義体を「Seikyu_Report.vb」という名前でプロジェクトに追加します。このとき、【図7】のようなメッセージが表示されますが、気にせず[はい]ボタンをクリックしてください。

図7 ActiveReportsの帳票定義体はApp_Codeに配置される
図7 ActiveReportsの帳票定義体はApp_Codeに配置される

サンプル帳票デザイン

 帳票定義体がプロジェクトに追加できたら、ソリューションエクスプローラで帳票定義体「Seikyu_Report.vb」を右クリックしショートカットメニューを表示させ、[デザイナの表示]からActiveReportsの帳票デザイナを起動します。

 なお、今回のサンプルは、前回のWindowsアプリ編の請求明細書と、同じデザインで作成します。重要なプロパティ値などは前回の記事を参照ください。

図8 CZ0906PdfBoundサンプル帳票デザイン
図8 CZ0906PdfBoundサンプル帳票デザイン

帳票定義体にコードを記述

 ActiveReports帳票定義体は、「DataDyanmics.ActiveReports.ActiveReports3」を継承したクラスで、実行時の各種イベントに対してコードを組み込むことができます。

 CZ0905Boundサンプルに組み込んだコードはリスト1になります。

リスト2 Seikyu_Report.vb
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つの機能を実現するためのコードをそれぞれ記述します。

  1. ページヘッダで計算結果を印字
    PageHeader.BeforePrintイベントで[PageHeader]セクションにある「今回消費税額」と「今回ご請求額」を計算しています。BeforePrintイベントで処理する事で印字内容に介入できます。
  2. 一覧部分の背景色を交互に切替え
    [Detail]セクションの背景色を交互に切り替えるために、Detail.Formatイベントで背景色を設定しています。背景色の判断はグループごとの現在行の行位置が奇数か偶数かでおこなっているため、Bill_GroupHeader.BeforePrintイベントで行数を0にクリアしています。

 以上が、帳票定義体クラスの準備作業となります。


  • ブックマーク
  • LINEで送る
  • このエントリーをはてなブックマークに追加

著者プロフィール

  • 初音玲(ハツネアキラ)

     国内SIerのSEでパッケージ製品開発を主に行っており、最近は、空間認識や音声認識などを応用した製品を手掛けています。  個人的には、仕事の内容をさらに拡張したHoloLensなどのMRを中心に活動しています。  Microsoft MVP for Windows Development...

バックナンバー

連載:現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)

もっと読む

All contents copyright © 2005-2019 Shoeisha Co., Ltd. All rights reserved. ver.1.5