SHOEISHA iD

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

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

5分でわかるActiveReports帳票

5分でわかるActiveReports帳票-罫線・折り返しとプレビュー・印刷(2007年度版)

ActiveReportsの罫線・折り返しとプレビュー・印刷

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

WebアプリケーションでActiveReports帳票を印刷する

ActiveXビューワによる帳票の印刷・プレビュー

 ActiveReportsでは、Windows Formsで利用可能なViewerコントロール同様に、Webアプリケーションにおいても、高機能なビューワを利用することができます。WebViewerコントロールを用いたアプリケーションは、Professional版でしか利用できませんが、ActiveXビューワ(arview2.cab)はStandard版でも利用できますので、今回はその使い方について紹介したいと思います。

Webアプリケーションに帳票生成ファイルを追加する

 Webサイトのプロジェクト配下に直接レポートファイルを設置すると、ActiveReportsレポートデザイナのパフォーマンスが落ちてしまいます。WebアプリケーションでActiveReports帳票を開発する場合は、別途クラスライブラリのプロジェクトを作成し、それを参照した方がよいでしょう。

 Webアプリケーションの実行時にはWebサイトのプロジェクト配下に直接配置しても特に問題はありません。

 以下の例では、WEBアプリケーション配下のRptフォルダにレポートファイルを配置しています。

Webアプリケーションプロジェクト
Webアプリケーションプロジェクト

 レポートレイアウトの作成方法はWindowsアプリケーションの場合と同様です。

WebページにActiveXビューワを配置する

 次に、Webページでのビューワ表示部分を作成します。Webアプリケーションプロジェクトにarview2.cabを追加し、aspxファイル内では、<object>タグを使用してActiveXビューアを埋め込みます。

<object id="arv" codebase="arview2.cab#Version=2,4,2,1303">
</object>
ActiveXビューワ
ActiveXビューワ

 各画面でビューワのサイズなどを指定したものを共通で利用したい場合は、ビューワ部分のHTMLソースを外部ファイル化し、インクルードするように作っておくとその後の更新が楽になります。

 次に、HTMLの<head>タグの中に、データパスを指定するためのVBScriptコードを追加します。ActiveXビューワではVBScriptでプロパティを設定することで、DocumentクラスのPrintメソッドを実行するのと同様、簡単にビューワの表示・印刷ダイアログの初期値を簡単に変更できます。

<script type="text/vbscript" language="vbscript">
<!--    
Sub arv_ControlLoaded()
     'arv:  <object>タグのid属性で指定した値
     arv.DataPath = "Default.aspx?ReturnReport=1"
End Sub
//-->
</script>

 この他にも、ActiveXビューワには初期表示設定や、印刷ダイアログを表示して印刷する際の設定など、さまざまなプロパティが用意されています。

ActiveXビューワのイベント
関数 内容
arv_ControlLoaded() ビューワの読み込み
arv_LoadedComplete() ビューワ内のレポートの読み込み完了
ActiveXビューワのプロパティ
プロパティ 設定値
Printer.PaperSize 9=A4:8=A3
Printer.Orientation 1=縦:2=横
Printer.DeviceName 使うプリンタデバイス
Zoom 初期のズーム
Printer.RenderMode=1 クライアント環境のOSがWindows 98/Meである場合に、文字間隔が不正になる問題を回避するためのコード

 以下のプロパティはビューワ表示ではなく、直接印刷ジョブをプリンタへ送信する場合に指定します。

印刷ジョブを直接プリンタへ送信するときに使用するプロパティ
プロパティ 設定値
Printer.DispleyProgressDialog True(プログレスダイアログ表示可否。直接印刷を行わない場合はFalse)
PrintReport True(直接印刷時のダイアログ表示可否)

帳票を生成する

 ページにActiveXビューワの表示領域を追加したら、次はビューワで表示するための帳票データの生成処理を実装します。

 ASP.NET WebフォームのPage_Loadイベントに以下の処理を追加します。この処理ではActiveReports帳票を生成し、データをMemoryStreamオブジェクトに一旦格納したのちバイナリストリームとして返しています。

画面表示時に帳票をビューワに表示する(C# 2.0)
protected void Page_Load(object sender, EventArgs e)
{
    MemoryStream outStream = new MemoryStream();

    Rpt.NewActiveReport1 rpt = new Rpt.NewActiveReport1();
    rpt.Run(false);

    //メモリストリームに帳票データを保存します。
    rpt.Document.Save(outStream, 
                 DataDynamics.ActiveReports.Document.RdfFormat.AR20);

    //バッファストリームのシークポインタの位置を先頭に移動します。
    outStream.Seek(0, SeekOrigin.Begin);

    //ストリーム読み込み用のバッファを作成し、
    //ストリームのデータを読み込みます。
    byte[] bytes = new byte[outStream.Length];
    outStream.Read(bytes, 0, (int)outStream.Length);

    //出力内容をバッファ ストリームから削除します。
    this.Page.Response.ClearContent();
    //ヘッダへの出力内容をバッファ ストリームから削除します。
    this.Page.Response.ClearHeaders();

    //出力ストリームにレポートを出力します。
    this.Page.Response.BinaryWrite(bytes);
}
画面表示時に帳票をビューワに表示する(VB.NET 2005)
Protected Sub Page_Load(ByVal sender As Object, _
        ByVal e As System.EventArgs) Handles Me.Load

    Dim outStream As New MemoryStream
    Dim report1 As New NewActiveReport1()
    report1.Run(False)
    report1.Document.Save(outStream, _
            DataDynamics.ActiveReports.Document.RdfFormat.AR20)

    'バッファストリームのシークポインタの位置を先頭に移動します。
    outStream.Seek(0, SeekOrigin.Begin)

    'ストリーム読み込み用のバッファを作成し、
    'ストリームのデータを読み込みます。
    Dim bytes(outStream.Length) As Byte
    outStream.Read(bytes, 0, outStream.Length)

    '出力内容をバッファストリームから削除します。
    Me.Page.Response.ClearContent()
    'ヘッダへの出力内容をバッファ ストリームから削除します。
    Me.Page.Response.ClearHeaders()

    '出力ストリームにレポートを出力します
    Me.Page.Response.BinaryWrite(bytes)
End Sub

 コードをビルドしてWeb Formを表示し、Webページにビューワと帳票が表示されれば成功です。

ActiveXビューワで帳票を表示した例
ActiveXビューワで帳票を表示した例

おわりに

 今回はActiveReportsの罫線機能とデータの折り返し、プレビューと印刷機能について紹介しました。次回は、ActiveReportsで利用できるさまざまなデータソースに関する話題と、Webサービスを利用したネットワーク帳票などについて紹介する予定です。

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

  • X ポスト
  • このエントリーをはてなブックマークに追加
5分でわかるActiveReports帳票連載記事一覧

もっと読む

この記事の著者

宮本奈紗(ミヤモトナサ)

株式会社システムインテグレータ ERPソリューション部所属。ERPシステムの設計・開発に従事。業務でActiveReportsを使用。

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

渡辺俊史(ワタナベトシフミ)

株式会社システムインテグレータ パッケージ開発部所属。ECサイト構築パッケージの設計・開発に従事。VSUG(Visual Studio User Group) データベース・データアクセスフォーラムリーダー。blog...

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

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

この記事をシェア

  • X ポスト
  • このエントリーをはてなブックマークに追加
CodeZine(コードジン)
https://codezine.jp/article/detail/1845 2014/02/06 11:25

おすすめ

アクセスランキング

アクセスランキング

イベント

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

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

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

メールバックナンバー

アクセスランキング

アクセスランキング