レポートを用いた帳票の作成
ここでは例として、会員テーブルを元に、会員名簿を印刷する場合を考えます。帳票は大まかに、以下の4つの手順で作成していきます。
- 手順1:データの準備
- 手順2:レポートの作成
- 手順3:レポートを表示させるWebフォームの作成
- 手順4:PDFへの直接出力
手順1. データの準備
ここでは、SQL Serverを利用する例として会員情報を格納したテーブルを用意します。また、レポートのデータソースとして、マイクロソフトの推奨する通り、「ストアドプロシージャ」と「テーブルアダプタ」を準備する必要があります。
(1)データベースとテーブルの作成
まず、SQL Server データベースを、[新しい項目の追加]-[SQL Server データベース Visual Basic]を選択して作成します。名前は既定の「Database1.mdf」のまま、「WebApplication1」-「App_Data」の配下に作成されるものとします。
続いて、会員情報を格納した「Member」というテーブルを表1のとおり作成し、適当なデータを入力しておいてください。
№ | 項目 | 列名 | データ型 | 主キー |
1 | 会員ID | MemberID | nvarchar(4) | ● |
2 | 氏名(姓)漢字 | SeiKanji | nvarchar(6) | |
3 | 氏名(名)漢字 | MeiKanji | nvarchar(6) | |
4 | 氏名(姓)カナ | SeiKana | nvarchar(12) | |
5 | 氏名(名)カナ | MeiKana | nvarchar(12) | |
6 | 郵便番号 | ZipCode | nvarchar(8) | |
7 | 住所1 | Address1 | nvarchar(24) | |
8 | 住所2 | Address2 | nvarchar(24) | |
9 | 電話番号 | TelNum | nvarchar(13) | |
10 | 携帯電話番号 | MobileNum | nvarchar(13) | |
11 | 備考 | Remarks | nvarchar(36) |
(2)ストアドプロシージャの作成
テーブルの作成が終わったらこれを基に、ストアドプロシージャを作成します。
[サーバーエクスプローラー]内の[データ接続]-[Database1.mdf]-[ストアドプロシージャ]を右クリックして、[新しいストアドプロシージャの追加]をクリックして、コードウィンドウを表示します。
ここに、Memberテーブルのすべてのデータを選択するSQL文「SELECT * FROM Member」を記述します。最終的にリスト1のようなコードが記述されればOKです。
CREATE PROCEDURE dbo.StoredProcedure1 AS SELECT * FROM Member RETURN
コードウィンドウを閉じ、保存して終了します。名前は既定の「StoredProcedure1」になっているものとします。動作を確認するには、[StoredProcedure1]を右クリックして、[実行]をクリックし、[出力]ウィンドウにデータの内容が表示されれば成功です。
(3)テーブルアダプタの作成
作成したストアドプロシージャを基に、テーブルアダプタをデータセット上に作成します。[新しい項目の追加]-[データセット Visual Basic]を選択してください。データセットは既定では「DataSet1.xsd」という名前で作られます。データセットデザイナー上を図1のように右クリックして、[追加]-[TableAdapter]をクリックします。
[TableAdapter構成ウィザード]ダイアログが開きますので、表2のように設定します。
ダイアログ名 | 確認・設定内容 |
データ接続の選択 | 「Database1.mdf」が選択されていること |
接続文字列をアプリケーション構成ファイルに保存する | [次の名前で接続を保存する]がチェックされ、「Database1ConnectionString」と入力されていること |
コマンドの種類を選択します | [既存のストアドプロシージャを使用]をチェックすること |
コマンドを既存のストアドプロシージャにバインドする | [Select]で「StoredProcedure1」を選択すること |
生成するメソッドの選択 | 既定の設定のまま |
ウィザードの結果 | [完了]をクリック |
ダイアログが閉じ、図2のように、「DataSet1.xsd」のデータセットデザイナー上にテーブルアダプタができたら、[×]をクリックして閉じ、変更を保存します。
ここまでで、データの準備は完了です。