条件付きレポートファイル(VisualStudio2005にて)の表示

前回のレポートファイルの表示では、条件なしにすべてのデータが表示されてしまった。
条件付きでレポートファイルを表示が出来ないか調査した。

まず、条件付きでレポートファイルを表示する場合、
VB.NET側で作成したDataSetをクリスタルレポート側のDataSourceとしてセットする必要があるよう。

DataSetを作成する際には2通りのやり方があり、
一からDataSetを作成するか、BindingSourceを利用してDataSetを作成するかだ。

今回はデータベースへの接続して、そのテーブル構成のまま条件のみ
指定して表示するため、BindingSourceを利用した。
BindingSourceを利用しないで一からプチプチと各テーブル、各フィールドを作成しても問題なし。


□BindingSourceを利用してDataSetを作成

1. [ツールボックス]の[データ]にあるBindingSourceをFromに貼り付ける。
2. BindingSourceのプロパティにあるDataSourceコンボボックスをクリックし、
  プロジェクトデータソースの追加を選択
3. データベース構成ウィザードにあるデータベースアイコンを選択し、次へボタン押下
4. 新しい接続ボタンを押下し、接続を追加する。 

例)MS SQLServer2005の場合
 データソース:Microsoft SQL Server (OLE DB)
 サーバ名:利用するサーバ名を選択
 認証するユーザ、パスワードを設定してOKボタン押下

5. 作成した新しい接続を選択し、次へボタン押下。
6. 接続文字列を設定し、次へボタン押下。(通常はデフォルトのConnectionStringで問題なし)
7. レポート表示するテーブルまたは、フィールドを選択
8. データセット名(通常はDataSet1のまま作成)を入力し、完了ボタン押下。

↓このように作成されるはず。

無料ではじめるサイト運営
無料で始まる副収入












□作成したDataSetの構成を変更(リレーションシップ作成)

1. From[デザイン]のDataSet1を右クリックし、データセットデザイナを起動
  (ソリューションエクスプローラ内のDataSet1.xsdダブルクリックでも可能)
2. 構成を変更したいテーブル名を右クリックし、[構成]メニューを選択する。
3. データセットでテーブルに関連付けるキー列、外部キー列を設定する。

以上でDataSetの作成は完了。続いてレポートファイルを作成する。


□レポートファイルの作成

1. [ソリューションエクスプローラ]のプロジェクト名を右クリック。
2. [追加]-[新しい項目]と続き、テンプレートから「Crystal レポート」を選択
3. 適当なレポートファイル名を入力してOKボタン押下。
4. Crystal Reportsギャラリというダイアログが表示されるので「空のレポート」を選択してOKボタンを押下


□DataSet項目を設定

1. [フィールドエクスプローラ]のデータベース フィールドを右クリック。
2. [データベースエキスパート]を選択。
3. [プロジェクトデータ]-[ADO.NETデータセット]フォルダの内のDataSet1を選択。
5. 表示させる項目のテーブル名を[>]ボタンで追加し、OKボタンを押下
6. [フィールドエクスプローラ]のデータベース フィールドに上記で選択した項目があることを確認し、
  その項目をレポートファイル上のSection3(詳細)へ追加
7. メインレポートプレビューボタンを押下
8. レポートが表示される? = されないのが正解。謎のダミーデータが表示される時もあるかもw


まだこの状態ではDataSet1へデータを追加していないため、表示されない。

以下からはADO.NETの知識とVB.NET2005の理解が必要。
ADO.NETおよびVB.NETの詳しい内容については↓で確認。




ADO.NET基礎講座

□VB.NETによるデータベース接続(Form_Load時に)

1. Form_Load時のイベント処理でADO.NET で SQLServer 2005 に接続する
2. DataSet1に設定した項目のテーブルを条件を指定してデータベースから取得
3. データベースから取得した内容をDataSet1へセット


例)作成したDataSetへ内容をセットする

'DB接続用文字列を作成
Dim strConnectionString As String = String.Empty

' DB接続用データソース
strConnectionString &= "Data Source=サーバ名\インスタンス名;"
' 接続先データベース
strConnectionString &= "DataBase=データベース名;"
' SQLサーバ接続用ユーザ
strConnectionString &= "UID=接続ユーザ名;"
' SQLサーバ接続用パスワード
strConnectionString &= "PWD=接続パスワード;"

' データベースへの接続、データの取得、接続の解除を行います。
Dim rpSQLAdapter As SqlDataAdapter

' 作成したDataSet1を参照したDataSetを作成
Dim rpDataset = New DataSet1
Dim hConnection = New System.Data.SqlClient.SqlConnection(strConnectionString)
Dim hCommand = hConnection.CreateCommand()

'DateSetへ追加するデータ参照用SQL
Dim SQLST = "SELECT * FROM テーブル WHERE テーブル.NAME='テスト太郎'"

'SQL発行
hCommand.CommandText = SQLST

rpSQLAdapter = New SqlDataAdapter(hCommand)
rpSQLAdapter.Fill(rpDataset, "テーブル")

' 実行した SQL コマンドを破棄
hCommand.Dispose()
rpSQLAdapter.Dispose()

□レポートファイルを読込み(Button_Clickなどの処理に)

1. Button_Click時のイベント処理で指定したレポートファイルを読込む
2. Form_Load時にデータがセットされたDataSetをレポートのデータソースへセット
3. プリンターに指定したレポートファイルの条件が指定されたレポートが印刷される

例)レポートファイルを読込みレポートを表示する

Dim report As New ReportDocument()
'レポートファイル読込み(c:\に保存したレポートファイルを読込み)
report.Load("c:\report.rpt")
'作成したデータソースをセット
report.SetDataSource(rpDataset)  ※←上記の例でセットしたrpDatasetをここでセットする
'即時印刷
report.PrintToPrinter(1, True, 1, 2)

指定した条件(例:NAME=テスト太郎)の内容でレポートファイルが印刷出来た。
あとはクリスタルレポートの操作方法(レイアウトや項目設定)を確認する必要がありそうだ。

印刷出来ることは確認出来たが、毎回印刷してては用紙がもったいない、、
ってことで、次回はクリスタルレポートビュア(プレビュー)についてを書こうと思う。

↓以下は参考書として
Crystal Reports11徹底活用術
Crystal Reports9徹底活用術

ブログ気持玉

クリックして気持ちを伝えよう!

ログインしてクリックすれば、自分のブログへのリンクが付きます。

→ログインへ

なるほど(納得、参考になった、ヘー)
驚いた
面白い
ナイス
ガッツ(がんばれ!)
かわいい

気持玉数 : 0

この記事へのコメント

この記事へのトラックバック

  • プラダ トート

    Excerpt: 条件付きレポートファイル(VisualStudio2005にて)の表示 田舎システムエンジニアの日常/ウェブリブログ Weblog: プラダ トート racked: 2013-07-08 10:59
  • http://www.valras-plage.net/antlerx-review/

    Excerpt: _t_|[gt@C_iVisualStudio2005__j_\& c_VXeG_WjA_� /EFu_u_O Weblog: http://www.valras-plage.net/antlerx-review/ racked: 2016-11-30 05:44