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

解決


たまご  2005-08-11 21:40:08  No: 124064

はじめまして。

現在、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 22:04:27  No: 124065

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


たまご  2005-08-11 22:15:27  No: 124066

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

同じエラーとなります。


たまご  2005-08-11 22:31:46  No: 124067

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

 sql = "SELECT * FROM tbl_Build"など。

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


特攻隊長まるるう  2005-08-11 22:42:18  No: 124068

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


たまご  2005-08-11 23:05:56  No: 124069

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

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

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


特攻隊長まるるう  2005-08-11 23:34:21  No: 124070

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 23:58:38  No: 124071

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

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

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


特攻隊長まるるう  2005-08-12 00:26:51  No: 124072

>出力される内容は下記の通りです。
>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-12 01:37:48  No: 124073

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

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

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


クリレポ  2005-08-12 17:44:38  No: 124074

バージョンは
 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-13 05:37:12  No: 124075

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

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

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

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


※返信する前に利用規約をご確認ください。




  


  このエントリーをはてなブックマークに追加