Crystal Reportを用いて印刷を行なう際に出るエラーに対応するには?

解決


たまご  2005-08-11 12:40:08  No: 124064  IP: [192.*.*.*]

はじめまして。

現在、CrystalReportを用いて印刷を行なおうとしていますが、
印刷実行時、下記のエラーが出てしまいます。
>>
'System.Data.SqlClient.SqlException' のハンドルされていない例外が system.data.dll で発生しました。

追加情報 : システム エラーです。
<<
Microsoftのサポートオンラインに該当記事がありましたが、
いまいち理解しきれませんでした。

下記が実行時にエラーで止まってしまう構文の一部となります。
sql = "SELECT tbl_Build.*, FROM tbl_Build WHERE tbl_Build.ID = 1"
SqlDataAdapter1.SelectCommand.CommandText = sql
DsReport1.Clear()
SqlDataAdapter1.Fill(DsReport1, "tbl_Build")    ←ここで上記エラー出ます。

お教えいただければ幸いです。宜しくお願いします。

編集 削除
特攻隊長まるるう  2005-08-11 13:04:27  No: 124065  IP: [192.*.*.*]

SqlDataAdapter1.Fill(DsReport1)
で実行するとどうです?。

編集 削除
たまご  2005-08-11 13:15:27  No: 124066  IP: [192.*.*.*]

早速の回答ありがとうございます。
試してみましたが、ダメでした。

同じエラーとなります。

編集 削除
たまご  2005-08-11 13:31:46  No: 124067  IP: [192.*.*.*]

続けての書き込みで申し訳ないですが、
SQL文を書き変えると、プレビュー画面は問題なく表示されました。

 sql = "SELECT * FROM tbl_Build"など。

ただ、やはりデータが反映されない所は変わりません。

編集 削除
特攻隊長まるるう  2005-08-11 13:42:18  No: 124068  IP: [192.*.*.*]

SQL文に余計なカンマ。ID は予約語なので一応、大括弧で囲みます。
   sql = "SELECT tbl_Build.* FROM tbl_Build WHERE tbl_Build.[ID] = 1"
>ただ、やはりデータが反映されない所は変わりません。
質問では取り上げられてない内容です。質問に含まれているなら
詳しい状況を説明して下さい。

編集 削除
たまご  2005-08-11 14:05:56  No: 124069  IP: [192.*.*.*]

失礼しました。
これまで、エラーが出て、プレビュー画面までいけなかったのですが、
自分で色々やってみていて、「SELECT tbl_Build.*,」の","をとったところ、
プレビューは表示されるようになりました。
が、そこに反映されるはずのデータが何もでてこず、真っ白です。

という状況に変わりました。(一歩前進でしょうか。。)

※[]に関しましては、特に変化はありませんでした。

編集 削除
特攻隊長まるるう  2005-08-11 14:34:21  No: 124070  IP: [192.*.*.*]

SqlDataAdapter1.Fill(DsReport1)

   SqlDataAdapter1.Fill(DsReport1, "tbl_Build")
戻してますか?最初の質問で情報が少なかったので、色々と
こちらから状況を把握するために試してる状態で、必ずしも
解決に必要な回答を付けている状態ではありません。
   SqlDataAdapter1.Fill(DsReport1, "tbl_Build")
の後ろに、
        Dim i As Integer
        With DsReport1
            For i = 0 To .Tables.Count - 1
                Debug.WriteLine(i.ToString & " : " & .Tables(i).TableName)
            Next
        End With
を追加して、出力される内容を教えて下さい。
また、プレビューにテーブルはどうやって設定してますか?

編集 削除
たまご  2005-08-11 14:58:38  No: 124071  IP: [192.*.*.*]

>戻してますか?最初の質問で情報が少なかったので、色々と
>こちらから状況を把握するために試してる状態で、必ずしも
>解決に必要な回答を付けている状態ではありません。
すみません。ご足労お掛けします。。。

出力される内容は下記の通りです。
0 : Table
1 : tbl_Build
※今レコードは1行しかありません。

プレビューへのテーブルの設定ですが、
一部、レポートエキスパートで作成してから、残りを
[フィールドエクスプローラ]-[データベースフィールド]-[Table]から、
ドラッグ&ドロップでやってます。

編集 削除
特攻隊長まるるう  2005-08-11 15:26:51  No: 124072  IP: [192.*.*.*]

>出力される内容は下記の通りです。
>0 : Table
>1 : tbl_Build
>※今レコードは1行しかありません。
とりあえず、DataSet の中にテーブルが2つありますね。(^^;)
テーブル『Table』は何のために存在してるのでしょうか?

また、今レコードが1行あるとの事ですが、どちらのテーブルに
存在しますか?どうやって確かめました?それともデータ
ベースのデータで該当するレコードが1行というだけの事
なのでしょうか???
例えば、先ほどのコードを
        Dim i, j As Integer
        With DsReport1
            For i = 0 To .Tables.Count - 1
                Debug.WriteLine(i.ToString & " : " & .Tables(i).TableName)
                With .Tables(i)
                    For j = 0 To .Rows.Count - 1
                        Debug.WriteLine(.Rows(j).Item(0))
                    Next
                End With
            Next
        End With
に変更すれば、DataSet の中にどんなデータが格納されているか確認できます。
データが確認できれば、データベース検索に関しては問題ないでしょう。

ここからは CrystalReport の設定を確認する事になります。
例えば、データ検索結果は tbl_Build に格納されているのに
Table を表示するテーブルとして設定してあれば、当然何も
表示されません。
例えば、CrystalReport の表示更新に伴い Refresh 系のコマンドが
用意されており、実行する必要があるのかもしれません。
ただし、ボクは CrystalReport を使った事がありませんので、
ここまでで回答を保留しておきます。使った事がある人の回答
が付く事をお待ち下さい。

編集 削除
たまご  2005-08-11 16:37:48  No: 124073  IP: [192.*.*.*]

確かにテーブルが二つあります。
これは、私の意図したものではないので、
確認してみたいと思います。

また、変化があり次第、発言いたします。

では、特攻隊長まるるう様ありがとうございました。

編集 削除
クリレポ  2005-08-12 08:44:38  No: 124074  IP: [192.*.*.*]

バージョンは
 Crystal Reports for Visual Studio .NET
でいいでしょうか?私も詳しくないんですが
http://www.microsoft.com/japan/msdn/library/ja/crystlmn/html/crconreportdataaccess.asp
プル型とプッシュ型の違いは確認済みですか?

CrystalReportViewer を使った時に参考にしたページです。
http://www.microsoft.com/japan/msdn/office/access/VBtips/report_sub/

参考になれば。

編集 削除
たまご  2005-08-12 20:37:12  No: 124075  IP: [192.*.*.*]

クリレポさん、ありがとうございます。
どちらのページも読みましたが、解決には至りませんでした。

と、原点に返り、特攻隊長まるるうさんの
>とりあえず、DataSet の中にテーブルが2つありますね。(^^;)

参照しているデータベースを調べたところ、
レポートに追加するデータソースが、全く違うものに設定されていました。
選択したテーブルを変更したところ、無事印字されました。

結局のところ、単純な間違いでありました。
お騒がせしました。

編集 削除