- PR -

VB.NETでクリスタルレポートver.10 - 条件(SQL)によるデータの絞込み

1
投稿者投稿内容
ひびき
会議室デビュー日: 2005/01/20
投稿数: 1
投稿日時: 2005-01-21 15:17
お世話になります。
VB.NETでクリスタルレポートver.10を使って帳票出力の開発を行っています。

[システム環境]
OS : WindowsXP Pro
言語 : VB.NET
帳票 : クリスタルレポートver.10

[環境]
@項目(商品一覧、売上伝票など)ごとにレポートファイルが複数ファイル存在する。
ADB(SQLServer)にはレポートファイルから参照されるテーブルが複数テーブル存在する。
B1つのレポートファイルが参照するテーブルは1〜n個のテーブル

[実現したいこと]
上記環境のもと、項目ごとに出力条件選択のインターフェイスを用意して
@出力するレポートファイル(既存)を動的に変更
A出力するデータを動的な条件(SQL)によって絞込み

[現在の方法]
@DBに接続(SqlConnection)
ASqlDataAdapterでSQLによって絞り込まれたデータを取得。
BFillメソッドで取得したデータをデータセットに格納。
Cクリスタルレポートにデータセットを送信。

[質問内容]
@クリスタルレポートver.10で、出力するデータを条件によって絞込みするには
どのような方法があるのでしょうか?

A複数テーブルを扱う場合に
1) SqlDataAdapterのSQL文
2) SqlDataAdapter.Fillメソッド(DataTable)
3) レポートファイル内のデータフィールド
上記3つで扱うDBのテーブルにはどのような関係(整合性)を持たせて
おかなければならないのでしょうか?

B現在データセットファイル(.xsd)は前もって作成しておらず
レポートファイルもプロジェクトに組み込まれていません。
故に、データセットのリレーションの設定やレポートファイルのリンクの設定はしていません。
これによって何か不具合は発生するのでしょうか?


何か少しでも情報をご教授いただけるとありがたいです。
よろしくお願いします。


以下にサンプルコードを記述します。

'CR Variable
Dim crReportDocument As ReportDocument

'ADO.NET Variables
Dim adoSqlConnection As SqlConnection
Dim adoSqlDataAdapter As SqlDataAdapter
Dim dataSet As dataSet

Dim sqlString As String = ""
Dim connectionString As String = ""
Dim Form1 As Form1

Form1 = New Form1()

'Database connection
connectionString = "Data Source=DS001;Initial Catalog=sampledb;Integrated Security=SSPI;"
adoSqlConnection = New SqlConnection(connectionString)

'Create an instance of the strongly-typed report object
crReportDocument = New ReportDocument()
crReportDocument.Load("C:\\CRreport\\sample.rpt")

'SQL
sqlString = "SELECT * FROM TABLE_A LEFT JOIN TABLE_B ON TABLE_A.A001=TABLE_B.B001"

'Retrieve the data using the SQL statement and existing connection
adoSqlDataAdapter = New SqlDataAdapter(sqlString, adoSqlConnection)

'Create a instance of a Dataset
dataSet = New DataSet()
adoSqlDataAdapter.Fill(dataSet)

'Pass the populated dataset to the report
crReportDocument.SetDataSource(dataSet)

'Set the viewer to the report object to be previewed.
Form1.CrystalReportViewer1.ReportSource = crReportDocument

Form1.Show()
1

スキルアップ/キャリアアップ(JOB@IT)