我工作的公司有一個使用 Delphi V 和 Crystal Reports 8 建立的應用程式。
我們都知道 Crystal & Delphi 有時會脾氣暴躁,最糟糕的是,幾乎沒有錯誤的詳細資訊。網路上也非常缺乏這方面的文檔。有很多人有類似的問題,但沒有解決方案。
我特別談論的錯誤是下圖的錯誤。當嘗試在螢幕上列印任何水晶報表時會發生這種情況。
這種情況有時會在客戶端電腦上發生,我們很難在我們的環境中複製。由於它是 Crystal 的舊版本,因此很難找到任何有用的文件來了解問題的確切根源。
答案1
註冊表中的問題可能是由 BDE 的雙重安裝引起的。發生這種情況的原因有很多:
- 重新安裝了應用程式或borland,之前沒有卸載它
- 卸載未完全完成
- 使用 BDE 安裝了第二個應用程式
為了驗證這一點,我進入註冊表並發現以下內容:
[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 個(根據您的安裝檢查哪一個是正確的)。您應該有兩條路徑,如下圖所示。刪除其中之一
這應該只有一條路徑,如下圖所示。
關閉登錄編輯
現在您可以重新打開應用程式並嘗試打開螢幕上的任何報告。如果您正確執行了簡單的步驟,則不應出現任何錯誤,並且您應該能夠在螢幕上看到報告。
這種情況尤其發生在我的應用程式中,但使用 Crystal Reports 和 BDE Admin 的應用程式需要遵循相同的過程。
答案2
每次我在 Crystal 8.5 中遇到此類錯誤時,都與 Crystal 部署 DLL 的混合版本或缺少它們有關。就我而言,我們的一些客戶仍在使用 Crystal 6.0。
無聊的部分是找到所有 DLL 並將其刪除。通常,它們位於 x86 系統上的 %systemroot%\system32 上,以及 x64 系統上的 %systemroot%\syswow64 上。
其他需要注意的事項:
- 設定一個起點,我的意思是,在這裡我們始終確保它在乾淨的機器上運作。
- 同一台機器上的多個版本的水晶報表簡單地不起作用,就這樣。無論您是在談論開發環境還是部署環境。
- 我一般將所有 Crystal 8.5 部署 DLL 放在 %systemroot%\crystal 下,並將其放在系統 PATH 中。這解決了我 95% 最常見的部署相關問題。
我知道回答有點晚了,但它可以幫助其他人。