- - PR -
VB.NETでクリスタルレポートver.10 - 条件(SQL)によるデータの絞込み
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