2015年9月10日木曜日

ReportViewer の LocalReport を利用する(1)

ずっと以前にも利用していた ReportViewer ですが、最近また触れる機会が訪れたので備忘録的な意味も込めてまとめておきます。

必要となる環境は、有償/無償で若干異なります。Visual Studio Pro 版以上を用意できる場合は、特に追加で用意するものはありませんが、Express な無償のみで作成する場合は、別途 RDL/RDLC な ReportViewer 用帳票作成ツールが必要です。

スタンドアロンで帳票定義を作成する場合、Report Builder がちょうどよいかと思います。SQL Server のバージョンや SP のリリースに合わせて更新されるようですので、できる限り最新のものを利用するのがベターです。

image

Report Builder は SQL Server の関連ツールとして無償提供されているもので、基本機能としては SQL Server Reporting Service に直接デプロイできたりする、対サーバー用のツールです。

SSRS を利用しない、クライアント側で全ての処理を行うローカルレポートの場合、Report Builder で作成する rdl ファイルをそのままでは利用できませんが、拡張子の変更と後述しますが内部の記述を若干変更することで利用可能です。

帳票を作成する流れはおおまかに書くと以下の通りとなります。

  1. 帳票で扱う DataSet 等のデータモデルを設定する
  2. 帳票をデザインする
  3. 出力結果を確認する

まずデータモデルですが、DataSet(DataTable)に限らずオブジェクトをバインドすることも当然可能です。Report 上では特に区別せずに「データセット」という名称で、これを扱っています。名前からすると DataSet でなくてはいけなさそうですが、そんなことはありません。

Report Builder ではツール上でデータセットの設定を行いますが、Visual Studio の場合はモデルとなるデータクラス(通常のクラスやプロジェクトに追加した DataSet)を作成後、一度ビルドしておく必要があります。ビルドしないとデザイナ側で認識できません。

Report Builder 上でデータセットの設定を行う場合は、次のように設定します。

RB1

レポートデータタブにあるデータソースを右クリックして、データソースの追加をクリック。

RB2

レポート全体におけるデータに対する接続を管理するデータソースを先に作成します。サーバーレポートの場合や、レポート上でデータベースに接続して結果を抽出したい場合には、対象となるデータベースへの接続設定を登録します。プログラム上でデータも作成してそれを出力する場合などでは、データソースの定義のみ必要となりますので、名前を入力するだけで大丈夫です。

RB3

データソースを作成後、データセットを設定します。同様に右クリックからデータセットの追加をクリック。

RB4

設定ダイアログが表示され、このデータセットで利用するデータソースを求められますので、「レポートに埋め込まれたデータセットを使用します」を選択し、先ほど作成したデータソースをコンボボックスから選択します。

RB5

データソースを選択後、左側に表示されている一覧から「フィールド」をクリック。

RB6

ここで帳票上で利用するデータ項目を定義します。基本は「クエリフィールド」を利用し、それらの値を事前に計算したい、SQL Server でいう計算列のような項目の場合には「計算フィールド」をクリックします。

RB7

ここでは、フィールド名とフィールドソースの二つが必要になります。フィールド名は、帳票上で扱う場合の名称、フィールドソースはバインドしたものの中での名称となります。DataTable であれば DataColumn.Name の値がフィールドソースです。

RB8

フィールドを定義し、OKをクリックするとレポートデータタブ上に設定したフィールドが一覧で表示されます。

RB9

基本はこの一覧からドラッグ&ドロップすればよいのですが・・・

RB10

単にドロップした場合、バインドしたデータの1件目を表示するように設定されますので、レコードの明細部などでは作成したテキストボックスを入力可能状態にして、そこへドラッグ&ドロップしてあげる必要があります。なお、この部分はなぜかプロパティタブには表示されていないのがちょっと不便なところです。

このような形で帳票を作成していきます。

0 件のコメント:

コメントを投稿