- - PR -
CrystalReportのデータソースは動的に変更できるか
1
| 投稿者 | 投稿内容 |
|---|---|
|
投稿日時: 2003-07-10 11:13
いつもお世話になっております。
今回は、レポートに使用しているデータソースをプログラム側で 動的に変更できるかという質問です。 おそらくシステムのデータベースを変更するという処理はあまり発生しないとは思いますが、もしデータベースを変更する必要があった場合に全てのrptファイルに対してデータソースの変更を行なう必要が生じてくるだろうと考えました。 どなたか良い知恵がございましたら、よろしくお願いいたします。 |
|
投稿日時: 2003-07-11 16:14
同じデータソースであれば簡単です。但し、フィールド名は同じでないと駄目です。違う場合はマッピングの API を利用する必要があると思います。
データベースの種類を変更する事も可能ですが、デザイナーならともかく、API だけでやるのは面倒かと。ACCESS や MSDE を使ってテストしてみると良いです。 .NET の場合は ADO.NET 側で対応した方が簡単なような気もします。 |
|
投稿日時: 2003-07-15 19:03
ありがとうございます。
早速、DataSetを使ってレポートを表示する方法に挑戦してみたのですが、 またもや壁にぶつかってしまいました。 レポートで複数のテーブルを使用している時や、サブレポートを使用している時の設定のしかたがわからないのです。 いろいろと手探りで行っているのですが、未熟ゆえどうしてもうまく動作してくれません。 なにかサンプルコードなどがありましたら、ぜひご教授よろしくお願いいたします。 ちなみに、うまく動作したコードを以下に記述します。 DataSet1にはTABLE1を配置しており、CrystalReport1では そのDataSetのTABLE1をデータソースとして使用しています。 CrystalReprtViewer view = new CrystalReportViewer() ; DataSet1 dataset = new DataSet1() ; CrystalReport1 cr1 = new CrystalReport1() ; string myString = "Initial Catalog=DB名; Data Source=サーバー名; user id=ユーザー名; password=パスワード" ; string mySelectQuery = "Select * From TABLE1"; SqlConnection myConnection = new SqlConnection (myString) ; SqlDataAdapter myAdaputer = new SqlDataAdapter( mySelectQuery , myConnection ); myAdaputer.Fill(dataset , "TABLE1") ; cr1.SetDataSource(dataset) ; view.ReportSource = cr1 ; view.Show() ; |
|
投稿日時: 2003-07-16 11:45
テーブル毎に設定してください。(リンクは MSDN Apr になってます)
ms-help://MS.MSDNQTR.2003APR.1041/crystlrf/html/crlrftableclasssetdatasourcemethodtopic.htm サブレポートはSubreportObjectを取得すれば後は同じだと思います。 ms-help://MS.MSDNQTR.2003APR.1041/crystlrf/html/crlrfsubreportobjectclasstopic.htm ADO <-> DBへの直接接続なんかも出来るんですが、複数テーブルなのか否か等で設定も違うので結構はまります。 わからない場合はサポートに聞くか、英語サイトのサンプル(沢山ある)を見てます。 |
|
投稿日時: 2003-07-16 11:47
ありがとうございます。
早速試してみます! |
1
