- PR -

CrystalReportへのデータ受け渡しについて

投稿者投稿内容
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 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とクリレポはまったくの初心者ですので…
申し訳ございませんがご教授していただけたら幸いです。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 13:38
引用:

Pizzaさんの書き込み (2006-03-28 12:42) より:

Dim AAS As New 作成したデータセット
Dim dstORADB As New DBから取得したデータセット
Dim bbb As 作成したデータセットの中に持っているエレメント(でよいのですか?テーブルみたいなやつです。)


すみません、"正しい型" が知りたいです。(特に bbb)

引用:

.netとクリレポはまったくの初心者ですので…
申し訳ございませんがご教授していただけたら幸いです。


今回の質問は CrystalReports とは関係ないですね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-03-28 13:56
じゃんぬねっと様
返信ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2006-03-28 13:38) より:
すみません、"正しい型" が知りたいです。(特に bbb)



Dim bbb As 作成したデータセットの中に持っているエレメント
上記は作成したデータセットの中に持っているエレメント+DataTable
という名称で定義されているようです。

引用:

今回の質問は CrystalReports とは関係ないですね。




あ、そうですね、CrystalReportsに行く前の話ですよね…
失礼いたしました。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 14:12
引用:

Pizzaさんの書き込み (2006-03-28 13:56) より:

Dim bbb As 作成したデータセットの中に持っているエレメント
上記は作成したデータセットの中に持っているエレメント+DataTable
という名称で定義されているようです。


dstORADB.Tables(0) は DataTable クラスのインスタンスが返されますよね。
とりあえず、Option Strict を On にしてください。
型の互換がない場合
引用:

Pizzaさんの書き込み (2006-03-28 13:56) より:

Dim bbb As 作成したデータセットの中に持っているエレメント
上記は作成したデータセットの中に持っているエレメント+DataTable
という名称で定義されているようです。


dstORADB.Tables(0) は DataTable クラスのインスタンスが返されますよね。
とりあえず、Option Strict を On にしてください。
キャストミスは型の互換がない場合に起きます。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-03-28 14:53
じゃんぬねっと様
度々返信ありがとうございます。

引用:

じゃんぬねっとさんの書き込み (2006-03-28 14:12) より:

dstORADB.Tables(0) は DataTable クラスのインスタンスが返されますよね。
とりあえず、Option Strict を On にしてください。
キャストミスは型の互換がない場合に起きます。




教えていただいた通りOption Strict を On にしたとたん…
出るわ出るわ警告の山でした…

原因はわかったのですが…
ではどうやってデータセットをクリスタルレポートに
送ってやればよいのでしょうか?

DBから取得したデータセットは実態が無いし、
コンソールアプリなのでデータアダプタやデータセットを視覚的に作れないし
どうやって紐付けたら良いのやら…???になってしまいました…

もしご存知であれば、方法を教えていただけますでしょうか?
度々申し訳ないです。

じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 15:20
引用:

Pizzaさんの書き込み (2006-03-28 14:53) より:

教えていただいた通りOption Strict を On にしたとたん…
出るわ出るわ警告の山でした…


頑張ってください。(^^)
遅延バインディングは避けるべきですからね。

引用:

原因はわかったのですが…
ではどうやってデータセットをクリスタルレポートに
送ってやればよいのでしょうか?

DBから取得したデータセットは実態が無いし、
コンソールアプリなのでデータアダプタやデータセットを視覚的に作れないし
どうやって紐付けたら良いのやら…???になってしまいました…


アンバウンド レポートとして出力したいとお見受けしました。
ReportDocument に DataSource とするものを渡すだけで良いです。
たとえば、重鎮 (Fill) した DataSet を SetDataSource メソッドで渡します。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
Pizza
会議室デビュー日: 2005/11/30
投稿数: 10
投稿日時: 2006-03-28 16:21
引用:

じゃんぬねっとさんの書き込み (2006-03-28 15:20) より:

頑張ってください。(^^)
遅延バインディングは避けるべきですからね。



ですよね…既に避けられない(というよりかは避ける時間が無い)
ものがちらほら…orz

引用:

アンバウンド レポートとして出力したいとお見受けしました。
ReportDocument に DataSource とするものを渡すだけで良いです。
たとえば、重鎮 (Fill) した DataSet を SetDataSource メソッドで渡します。



そうです!アンバウンドレポートです。
それがやりたかったので、じゃんぬねっとさんにご指摘いただいたとおり
以下のようなソースを書いてみました。

Dim aa As New CrystalReport1 '←作成したレポート本体
Dim dst As New DataSet 'データセット

dst = [データセット取得関数] 'select文の結果をデータセットとして格納
aa.SetDataSource(dst) '←追加
aa.PrintToPrinter(1, False, 1, 1) '印刷する

実行してみたところ、「クエリー エンジン エラー」が PrintToPrinter のところで
発生しているみたいです。

調べてみたところ、DBから取得したデータとレポートにセットするデータセットの
テーブル名、カラム名が同じでないか、配布先でエラーが発生するなどの情報を得る事が出来ました。

しかし、今回は開発環境上で、テーブル名カラム名も一致していました。
ほかに考えられる可能性ってあるんでしょうか?

ほっっっっんと度々申し訳ないです!
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-03-28 17:06
引用:

Pizzaさんの書き込み (2006-03-28 16:21) より:

しかし、今回は開発環境上で、テーブル名カラム名も一致していました。
ほかに考えられる可能性ってあるんでしょうか?
ほっっっっんと度々申し訳ないです!


うーん、カラムに関しては "型" も見てください。
型付 DataSet の場合は起こり得ないと思うんですけどね。

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

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