私が勤務する会社には、Crystal Reports 8 を使用して Delphi V で構築されたアプリケーションがあります。
Crystal と Delphi が時々不安定になることは誰もが知っていますが、最悪なのは、エラーの詳細がほとんどないことです。また、これに関する Web 上のドキュメントもほとんどありません。同様の問題を抱えている人はたくさんいますが、解決策はありません。
私が特に言及しているエラーは、下の画像にあるエラーです。これは、画面上の Crystal Reports を印刷しようとしたときに発生します。
これはクライアントのコンピュータで時々発生しており、私たちの環境で再現するのは困難でした。これは古いバージョンの Crystal であるため、問題の正確な原因を知るのに役立つドキュメントを見つけるのは非常に困難です。
答え1
レジストリの問題は、BDE の二重インストールによって発生する可能性があります。これにはいくつかの理由が考えられます。
- アプリケーションまたはBorlandをアンインストールせずに再インストールした
- アンインストールは完全に完了しませんでした
- BDEを使用して2番目のアプリケーションをインストールしました
これを検証するために、レジストリにアクセスし、次の内容を見つけました。
[HKEY_LOCAL_MACHINE \ SOFTWARE \ Borland \ Database Engine] "DLLPath" = "C:\\Program Files\\Common Files\\Borland Shared\\BDE" の形式は、path1、path2 です。
これを修正するには、次の操作を行う必要があります。
- 何か問題が発生した場合に備えて、BDE キーのバックアップを作成してください。
- アプリケーションを閉じます。
- Regedit を開きます (スタート > 実行 > regedit.exe)
- HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engineに移動します
- 次に、DLLPath編集キーと2つのパスのうちの1つをダブルクリックします(インストールに応じて正しいパスを確認してください)。下の画像のように2つのパスがあるはずです。そのうちの1つを削除します。
下の画像のように、パスは 1 つだけである必要があります。
登録を閉じる
これで、アプリケーションを再度開き、画面上でレポートを開いてみることができます。簡単な手順を正しく実行していれば、エラーは発生せず、画面上でレポートを表示できるはずです。
これは特に私のアプリケーションで発生しましたが、Crystal Reports と BDE Admin を使用するアプリケーションでも同じプロセスに従う必要があります。
答え2
Crystal 8.5 でこの種のエラーが発生するたびに、Crystal デプロイ DLL のバージョンが混在しているか、DLL が存在しないことが関係していました。私の場合は、一部のお客様がまだ使用している Crystal 6.0 でした。
退屈な部分は、すべての DLL を見つけて削除することです。通常、それらは x86 システムでは %systemroot%\system32 にあり、x64 システムでは %systemroot%\syswow64 にあります。
他に注意すべき点:
- 開始点を設定します。つまり、ここでは常にクリーンなマシンで動作することを確認します。
- 同じマシンに複数のバージョンの Crystal Reports をインストールすることは、単純には機能しません。開発環境であっても、展開環境であっても同じです。
- 通常、Crystal 8.5 のすべてのデプロイメント DLL を %systemroot%\crystal の下に配置し、システム PATH に配置します。これにより、最も一般的なデプロイメント関連の問題の 95% が解決されました。
回答するには少し遅いかもしれませんが、他の人の役に立つかもしれません。