- PR -

CrystalReport for .NET での レポートのロード失敗(WinXP)

投稿者投稿内容
hpm1976
会議室デビュー日: 2005/07/19
投稿数: 10
投稿日時: 2006-02-23 16:48
 VB.NETにてデータベースアプリケーションを開発、各WindowsOS(98、Me、2000、XP)に配布しテストしてみているのですが、
 その中で、Windows98及びXPでの実行時のみにプレビュー画面表示でエラーが出ます。

  「アプリケーションのコンポーネントでハンドルされていない例外が発生しました。」
    ↓
  「レポートのロードに失敗しました。」

 と表示され、アプリケーションが終了してしまいます。
 Windows98の方は、下記のリンク先にある方法(dbghelp.dllファイル上書き)にて対処できたのですが、
 WindowsXPは、同様の方法を試しても駄目でした。

 ネットでも色々調べてはいるのですが、どうも対処法が、何処から手をつけていいやらわかりません。
 問題のXP、今手元に無いので詳細な状態がわからないのですが、何から確認すればいいのか、
 XP上で(ソフトインストールやファイル操作等で)対処できるのか、対応するようプログラムの記述に修正が必要なのか、

 私も、急に上から指示され、頭を抱えております。
 ヒントになるような物でも構いません。調べれる情報があれば調べます。
 虫が良すぎるのも重々承知しております。
 何卒、ご助力お願いします。


ちなみに開発時の環境は、
 Windows2000 Pro
 VisualStudio .NET 2003
 MDAC 2.7
 .NET Framework 1.1


プレビューフォーム呼び出しの記述
 Dim f_Prev As New frmPreview
 Dim r_Prev As New rptPreview

 r_Prev.SetDataSource("データセット")
 f_Prev.rptViewer.ReportSource = r_Prev

 frm_prev.ShowDialog()
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-23 16:56
引用:

hpm1976さんの書き込み (2006-02-23 16:48) より:

「アプリケーションのコンポーネントでハンドルされていない例外が発生しました。」
   ↓
「レポートのロードに失敗しました。」


この原因となる「初回例外」の位置を教えてください。
ReportObject のインスタンスを生成するところで起きていますか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hpm1976
会議室デビュー日: 2005/07/19
投稿数: 10
投稿日時: 2006-02-24 10:29
 返信遅くなりました。

 -----------------------------
 Dim f_Prev As New frmPreview
 Dim r_Prev As New rptPreview

 ★

 r_Prev.SetDataSource("データセット")
 f_Prev.rptViewer.ReportSource = r_Prev

 frm_prev.ShowDialog()
 -----------------------------

 上記記述内の★までは動作確認しました。
 生成までは大丈夫のようです。

 上記プログラムの前に、データセットをデータグリッドにて表示させてはいるのですが、
 そこからレポートを開く時の記述になります。

 よろしくお願いします。
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-24 10:44
引用:

hpm1976さんの書き込み (2006-02-24 10:29) より:

上記記述内の★までは動作確認しました。
生成までは大丈夫のようです。


では、r_Prev.Load() で起きていると思うのですが、初回例外の詳細が見たいんです。
とりあえず、初回例外の位置を教えて頂けませんか? (CR 内部のスタックトレースも)

r_Prev.SetDataSource([データセット]) で起きているなんてことはないですよね?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hpm1976
会議室デビュー日: 2005/07/19
投稿数: 10
投稿日時: 2006-02-24 18:55
とりあえず例外の詳細部分を記述します。


------------------------------

このダイアログ ボックスではなく、Just-In-Time (JIT) デバッグを呼び出すための詳細については、
このメッセージの最後を参照してください。

************** 例外テキスト **************
CrystalDecisions.CrystalReports.Engine.LoadSaveReportException: レポートのロードに失敗しました。
at .I(String , EngineExceptionErrorID )
at .E(String , Int32 )
at CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportClass.Load(String reportName, OpenReportMethod openMethod, Int16 parentJob)
at CrystalDecisions.CrystalReports.Engine.ReportDocument.SetDataSource(Object value)
at DBapp.frmList.btnPrint_Click(Object sender, EventArgs e)
at System.Windows.Forms.Control.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnClick(EventArgs e)
at System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)
at System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)
at System.Windows.Forms.Control.WndProc(Message& m)
at System.Windows.Forms.ButtonBase.WndProc(Message& m)
at System.Windows.Forms.Button.WndProc(Message& m)
at System.Windows.Forms.ControlNativeWindow.OnMessage(Message& m)
at System.Windows.Forms.ControlNativeWindow.WndProc(Message& m)
at System.Windows.Forms.NativeWindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)


************** JIT デバッグ **************
Just-In-Time (JIT) デバッグを有効にするには、
このアプリケーション、またはコンピュータ (machine.config) の構成ファイルの
jitDebugging 値を system.windows.forms セクションで設定しなければなりません。
アプリケーションはまた、デバッグを
有効にしてコンパイルされなければなりません。

例 :

<configuration>
<system.windows.forms jitDebugging="true" />
</configuration>

JIT デバッグが有効なときは、このダイアログで処理するよりも、ハンドルされていない例外はすべて

コンピュータに登録された JIT デバッガに設定されなければなりません。

[ メッセージ編集済み 編集者: hpm1976 編集日時 2006-02-24 18:57 ]

[ メッセージ編集済み 編集者: hpm1976 編集日時 2006-03-14 15:26 ]
hpm1976
会議室デビュー日: 2005/07/19
投稿数: 10
投稿日時: 2006-02-24 19:13
引用:

じゃんぬねっとさんの書き込み (2006-02-24 10:44) より:

r_Prev.SetDataSource([データセット]) で起きているなんてことはないですよね?




 は無いと思いたいのですが、すみませんどうやって確認したら良いのでしょう?

 データセットはデータグリッド表示時に作成し、そのまま使いまわしております。
 自分的に、他OSに配布した場合はちゃんと動きましたし、XPもPCによっては動作確認できました。
 開発元では見たことのないエラーでして、どう対処して良いものやら、まったく検討のつかない状況なのです。

 ひょっとして、PCにインストールされているMDACや.NET Frameworkのバージョンによってエラーが出るという事はありえるのでしょうか?
 関係の無いことかもしれませんが、そのエラーに前後して、共通言語ランタイムデバッグサービスからも例外エラーが起こったらしいのですが・・・
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2006-02-24 19:21
引用:

hpm1976さんの書き込み (2006-02-24 19:13) より:

は無いと思いたいのですが、すみませんどうやって確認したら良いのでしょう?


スタック トレースを見る限り、起きていないと思います。

引用:

XPもPCによっては動作確認できました。


!? 動かない XP が SP2 だとかそういったことはないですか?

引用:

ひょっとして、PCにインストールされているMDACや.NET Frameworkのバージョンによってエラーが出るという事はありえるのでしょうか?


今回 DataSet を渡して出力しているので MDAC のバージョン問題とは思えません。
また、.NET Framework はきっと 1.1 でしょう?

ちなみにこの例外が起きても Try 〜 Catch で知らぬ顔をして続行すると、
普通に帳票が出力できたりしませんか?

_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
hpm1976
会議室デビュー日: 2005/07/19
投稿数: 10
投稿日時: 2006-02-24 19:53
引用:

 -----------------------------
 Dim f_Prev As New frmPreview
 Dim r_Prev As New rptPreview

 Try
  r_Prev.SetDataSource("データセット")
  f_Prev.rptViewer.ReportSource = r_Prev
 Catch ex As Exception
  MesssageBox.Show(ex.Message)
 End Try

 frm_prev.ShowDialog()
 -----------------------------




 そうですね、上のように記述しておくと、
 「レポートのロードに失敗しました。」
 と表示され、カラッポのビューアが表示されました。
 何か結果が普通すぎて、記述できなかったのです。

 
引用:

!? 動かない XP が SP2 だとかそういったことはないですか?




 初めは私もそう思ったのですが、動作を確認出来たPCも、つまりどちらもSP2なのです。
 (ちなみにどちらも、購入時からSP2です)
 あと、考えついたのがMDACら動作に関与してると思われるソフトウェア関連だったので記述させて頂いたのです。

 ひょっとしてアプリケーションの再インストールなどで直るかもしれないエラーの類なのでしょうか?

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