SHOEISHA iD

※旧SEメンバーシップ会員の方は、同じ登録情報(メールアドレス&パスワード)でログインいただけます

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

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

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

  • X ポスト
  • このエントリーをはてなブックマークに追加

レポートを定義する

 データ取得用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にクリアしています。

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

次のページ
PDFを自動生成

この記事は参考になりましたか?

  • X ポスト
  • このエントリーをはてなブックマークに追加
現役エンジニア直伝! 「現場」で使えるコンポーネント活用術(ActiveReports)連載記事一覧

もっと読む

この記事の著者

初音玲(ハツネアキラ)

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

※プロフィールは、執筆時点、または直近の記事の寄稿時点での内容です

この記事は参考になりましたか?

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/4026 2009/06/12 15:00

おすすめ

アクセスランキング

アクセスランキング

イベント

CodeZine編集部では、現場で活躍するデベロッパーをスターにするためのカンファレンス「Developers Summit」や、エンジニアの生きざまをブーストするためのイベント「Developers Boost」など、さまざまなカンファレンスを企画・運営しています。

新規会員登録無料のご案内

  • ・全ての過去記事が閲覧できます
  • ・会員限定メルマガを受信できます

メールバックナンバー

アクセスランキング

アクセスランキング