- - PR -
CrystalReportへのデータ受け渡しについて
投稿者 | 投稿内容 | ||||||||
---|---|---|---|---|---|---|---|---|---|
|
投稿日時: 2006-03-28 12:42
OS:WinXP Pro
DB:Oracle10g :VisualBasic.net 2003 :CrystalReport for VS.net 現在コンソールアプリから帳票を出力するツールを作成しております。 プロジェクト→追加→新しい項目の追加で作成したデータセットをクリレポ、 モジュールともに参照しております。 ODBCで接続したDBから取得したデータセットを項目の追加で作成したデータセットにセット しようとしているのですが、以下のエラーが発生してしまいます。 [指定されたキャストは有効ではありません。] Dim AAS As New 作成したデータセット Dim dstORADB As New DBから取得したデータセット Dim bbb As 作成したデータセットの中に持っているエレメント(でよいのですか?テーブルみたいなやつです。) dstORADB = DBから取得したデータをデータセットに格納 bbb = dstORADB.Tables(0) 取得したデータセットの任意の1テーブルをデータセットに格納 ↑ここで上記のエラーが発生してしまいます。 テーブルとデータセットは以下のようになっています テーブル col1 char col2 char col3 char col4 char col5 number col6 number col7 number データセット col1 string col2 string col3 string col4 string col5 long col6 long col7 long .netとクリレポはまったくの初心者ですので… 申し訳ございませんがご教授していただけたら幸いです。 | ||||||||
|
投稿日時: 2006-03-28 13:38
すみません、"正しい型" が知りたいです。(特に bbb)
今回の質問は CrystalReports とは関係ないですね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-28 13:56
じゃんぬねっと様
返信ありがとうございます。
Dim bbb As 作成したデータセットの中に持っているエレメント 上記は作成したデータセットの中に持っているエレメント+DataTable という名称で定義されているようです。
あ、そうですね、CrystalReportsに行く前の話ですよね… 失礼いたしました。 | ||||||||
|
投稿日時: 2006-03-28 14:12
dstORADB.Tables(0) は DataTable クラスのインスタンスが返されますよね。 とりあえず、Option Strict を On にしてください。 型の互換がない場合
dstORADB.Tables(0) は DataTable クラスのインスタンスが返されますよね。 とりあえず、Option Strict を On にしてください。 キャストミスは型の互換がない場合に起きます。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-28 14:53
じゃんぬねっと様
度々返信ありがとうございます。
教えていただいた通りOption Strict を On にしたとたん… 出るわ出るわ警告の山でした… 原因はわかったのですが… ではどうやってデータセットをクリスタルレポートに 送ってやればよいのでしょうか? DBから取得したデータセットは実態が無いし、 コンソールアプリなのでデータアダプタやデータセットを視覚的に作れないし どうやって紐付けたら良いのやら…???になってしまいました… もしご存知であれば、方法を教えていただけますでしょうか? 度々申し訳ないです。 | ||||||||
|
投稿日時: 2006-03-28 15:20
頑張ってください。(^^) 遅延バインディングは避けるべきですからね。
アンバウンド レポートとして出力したいとお見受けしました。 ReportDocument に DataSource とするものを渡すだけで良いです。 たとえば、重鎮 (Fill) した DataSet を SetDataSource メソッドで渡します。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 | ||||||||
|
投稿日時: 2006-03-28 16:21
ですよね…既に避けられない(というよりかは避ける時間が無い) ものがちらほら…orz
そうです!アンバウンドレポートです。 それがやりたかったので、じゃんぬねっとさんにご指摘いただいたとおり 以下のようなソースを書いてみました。 Dim aa As New CrystalReport1 '←作成したレポート本体 Dim dst As New DataSet 'データセット dst = [データセット取得関数] 'select文の結果をデータセットとして格納 aa.SetDataSource(dst) '←追加 aa.PrintToPrinter(1, False, 1, 1) '印刷する 実行してみたところ、「クエリー エンジン エラー」が PrintToPrinter のところで 発生しているみたいです。 調べてみたところ、DBから取得したデータとレポートにセットするデータセットの テーブル名、カラム名が同じでないか、配布先でエラーが発生するなどの情報を得る事が出来ました。 しかし、今回は開発環境上で、テーブル名カラム名も一致していました。 ほかに考えられる可能性ってあるんでしょうか? ほっっっっんと度々申し訳ないです! | ||||||||
|
投稿日時: 2006-03-28 17:06
うーん、カラムに関しては "型" も見てください。 型付 DataSet の場合は起こり得ないと思うんですけどね。 _________________ C# と VB.NET の入門サイト じゃんぬねっと日誌 |