DOBON.NET DOBON.NETプログラミング掲示板過去ログ

CrystalReportの配布について

環境/言語:[WinXp VB.NET .NET Framework1.1 SP1 CrystalReportv10]
分類:[.NET]

はじめまして
すいません、文章書く前に登録してしまいました。

本文をここに書きます。
クリスタルレポート v10 + VB.NETを使って開発をしています。
配布先のPCで印刷しようと、セットアッププロジェクトを作成して、
みたのですが、例外エラーが発生してクリスタルレポートのプレビューが
表示されません。ちなみにVb.NETでボタンを押したときに
Dim crp as new CrystalReport1
crp.PRintToPrinter(1,False,0,0)
と記述しただけの最低限のプログラムで検証しています。

過去の記事を参考にして、以下のマージモジュールは含めてみました。
Crystal_Database_Access2003.msm
Crystal_Database_Access2003_jpn.msm
Crystal_Managed2003.msm
Crystal_Managed2003_JPN.msm
Crystal_regwiz2003.msm(キーをプロパティに設定済)
VC_User_CRT71_RTL_X86_---.msm
VC_User_STL71_RTL_X86_---.msm

セットアップ先で印刷すると
System.TypeInitializationException: The type initializer for "CrystalDecisions.CrystalReports.
Engine.ReportDocument" threw an exception. ---> System.Runtime.InteropServices.COMException (0x80040154): COM
object with CLSID {CF76A644-314B-404D-8D45-F08B51FF990B} is either not valid or not registered.
at CrystalDecisions.CrystalReports.Engine.ReportDocument..cctor()
--- End of inner exception stack trace ---

というエラーが発生します。

心当たりのある方、ぜひアドバイスをお願いいたします。
納期前でへこんでおりますので、よろしくお願いします。
じゃんぬねっと です。

■No9162に返信(ちさんの記事)
> セットアップ先で印刷すると
> System.TypeInitializationException:

型の初期化に失敗しているようですね。
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/cpref/html/frlrfsystemtypeinitializationexceptionclasstopic.asp

ということは、帳票側のコンストラクタ辺りのソースに何か問題があるのでしょうか。
恐らく、その辺りは触ってないかと思うのですが...

# ちなみに、リリース コンパイルでしょうか?
じゃんぬねっと様

お返事ありがとうございます。

> ということは、帳票側のコンストラクタ辺りのソースに何か問題があるのでしょうか。
> 恐らく、その辺りは触ってないかと思うのですが...

クリスタルレポートファイルに関しては、プロジェクトに追加しただけで、
自身のソースは一切記述していません。(CrystalReport1.rpt)
<autogenerated>が作成したソースのみですので、コンストラクタは、
MyBase.Newされているだけとなっております。

> # ちなみに、リリース コンパイルでしょうか?

これは気にしていませんでしたが、Debugリリースになっていました。
何か関係があるのでしょうか?

ちなみにCrystalReportv10がインストールされた開発環境では、問題なく
印刷できています。
またCrystalReport開発元からcr10_net_server_install_jp.zipのランタイムを
ダウンロードしてインストールした端末でも正常に印刷できています。
このことから、何かマージモジュールが欠けているのかと考えていました。

何か私が勘違いして抜かしてしまっていることがあるかと思います。
もしよろしければ、またアドバイスをお願い致します。
じゃんぬねっと です。

■No9168に返信(ちさんの記事)
> ちなみにCrystalReportv10がインストールされた開発環境では、問題なく印刷できています。
> またCrystalReport開発元からcr10_net_server_install_jp.zipのランタイムを
> ダウンロードしてインストールした端末でも正常に印刷できています。
> このことから、何かマージモジュールが欠けているのかと考えていました。

例外の詳細には、「COM が登録されていない」とありますね。

その問題の端末の %windir%\System32 に以下のファイルは存在していますか?

 ・msvcp71.dll
 ・msvcp71d.dll
 ・msvcr71.dll
 ・msvcr71d.dll
お返事遅くなりました。

> その問題の端末の %windir%\System32 に以下のファイルは存在していますか?
>
>  ・msvcp71.dll
>  ・msvcp71d.dll
>  ・msvcr71.dll
>  ・msvcr71d.dll

4ファイルともSystem32フォルダ内に存在しております。
これらはクリスタルレポートのマージモジュールが参照しているdllなのでしょうか?

そのほかに、CrystalReportV10の最新マージモジュールをダウンロード
して適応させてみましたが、結果は変わりませんでした。

.NET2003にバンドルされているv9とv10を混在させると何か問題が発生するのでしょうか?
検索キーワード
CF76A644-314B-404D-8D45-F08B51FF990B
http://www.google.co.jp/search?sourceid=navclient&hl=ja&ie=UTF-8&rls=GGLD,GGLD:2004-47,GGLD:ja&q=CF76A644%2D314B%2D404D%2D8D45%2DF08B51FF990B

http://www.siteexperts.com/forums/viewConverse.asp?d_id=15119&start=0

当たりっぽいですが。
中 博俊様

ご回答ありがとうございます。

サイト参照してみました。
crystalreports10_net_webservicereporting.msmなど、
ほかにも含める必要のあるマージモジュールがあるみたいですね。
明日トライしてみます。

ありがとうございました。
結果についてはまたご報告させて頂きます。
・開発機で動いて、
・インストーラのmsm依存で導入する端末で動かず、
・zipから10のランタイム入れた端末では動く
のであれば、感触としては、
10で増えた分に対応するマージモジュールファイルがマージされていない、ということだと思います。
その分を含めて試してください。
(初期のだとjpn入れてもせいぜい5つですが、10で増えたでしょうし。)
(「C:\Program Files\Common Files\Merge Modules」)


それがだめなら、
「C:\Program Files\Common Files\Merge Modules」のmsmファイル自体、10用のに置き換わって
なかったり?
誰かCR10使ってる人で、問題ないよ、な人に、
「C:\Program Files\Common Files\Merge Modules」の詳細なファイルリストをアップして
もらって、自分のと比較してみるとか。
(残念ながら、私は入れ替えてません。CR使わないので。)



・・・。

って、書いたまま他の作業に追われて放置してる間に、
「ち」さんの返事ついてましたね。
がんばってください。
こど様
ご回答頂いた皆様

「ち」です。
ようやく問題が解決致しました。
ひとえに皆様のおかげです。ありがとうございました。

同じ現象に悩まれる方のために、解決方法をいかに載せます。

********************************************************
結論として、含めていたマージモジュールがCrystalReport v10用のもの
ではなかったために、例外が発生していました。

ここに同じ問題が載っています。
http://support.businessobjects.com/library/kbase/articles/c2016349.asp

CrystarlReports 10 and .NET 用デプロイ説明書を
見つけまして、(deploying_cr10_net.pdf)
http://support.businessobjects.com/communityCS/TechnicalPapers/deploying_cr10_net.pdf.asp
そこに記述されていたマージモジュールを読んでみると、MSDNに記述されていたものとまったく別のマージモジュールでした。

よって、
CrystalReport10_NET_EmbeddedReporting.msm
CrystalReport10_NET_RemoteReporting.msm
CrystalReport10_NET_WebServiceReporting.msm
CrystalReports10_maps.msm
を追加して対応しました。
これらは、cr10_net_merge_modules_jp.zipをダウンロードすれば入って
います。
http://support.businessobjects.com/communityCS/FilesAndUpdates/cr10_net_merge_modules_jp.zip.asp

以上です。
お世話になりました。
解決済み!

DOBON.NET | プログラミング道 | プログラミング掲示板