はじめまして。
現在、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") ←ここで上記エラー出ます。
お教えいただければ幸いです。宜しくお願いします。
SqlDataAdapter1.Fill(DsReport1)
で実行するとどうです?。
早速の回答ありがとうございます。
試してみましたが、ダメでした。
同じエラーとなります。
続けての書き込みで申し訳ないですが、
SQL文を書き変えると、プレビュー画面は問題なく表示されました。
sql = "SELECT * FROM tbl_Build"など。
ただ、やはりデータが反映されない所は変わりません。
SQL文に余計なカンマ。ID は予約語なので一応、大括弧で囲みます。
sql = "SELECT tbl_Build.* FROM tbl_Build WHERE tbl_Build.[ID] = 1"
>ただ、やはりデータが反映されない所は変わりません。
質問では取り上げられてない内容です。質問に含まれているなら
詳しい状況を説明して下さい。
失礼しました。
これまで、エラーが出て、プレビュー画面までいけなかったのですが、
自分で色々やってみていて、「SELECT tbl_Build.*,」の","をとったところ、
プレビューは表示されるようになりました。
が、そこに反映されるはずのデータが何もでてこず、真っ白です。
という状況に変わりました。(一歩前進でしょうか。。)
※[]に関しましては、特に変化はありませんでした。
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
を追加して、出力される内容を教えて下さい。
また、プレビューにテーブルはどうやって設定してますか?
>戻してますか?最初の質問で情報が少なかったので、色々と
>こちらから状況を把握するために試してる状態で、必ずしも
>解決に必要な回答を付けている状態ではありません。
すみません。ご足労お掛けします。。。
出力される内容は下記の通りです。
0 : Table
1 : tbl_Build
※今レコードは1行しかありません。
プレビューへのテーブルの設定ですが、
一部、レポートエキスパートで作成してから、残りを
[フィールドエクスプローラ]-[データベースフィールド]-[Table]から、
ドラッグ&ドロップでやってます。
>出力される内容は下記の通りです。
>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 を使った事がありませんので、
ここまでで回答を保留しておきます。使った事がある人の回答
が付く事をお待ち下さい。
確かにテーブルが二つあります。
これは、私の意図したものではないので、
確認してみたいと思います。
また、変化があり次第、発言いたします。
では、特攻隊長まるるう様ありがとうございました。
バージョンは
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/
参考になれば。
クリレポさん、ありがとうございます。
どちらのページも読みましたが、解決には至りませんでした。
と、原点に返り、特攻隊長まるるうさんの
>とりあえず、DataSet の中にテーブルが2つありますね。(^^;)
参照しているデータベースを調べたところ、
レポートに追加するデータソースが、全く違うものに設定されていました。
選択したテーブルを変更したところ、無事印字されました。
結局のところ、単純な間違いでありました。
お騒がせしました。
ツイート | ![]() |