我所在的公司有一个使用 Delphi V 和 Crystal Reports 8 构建的应用程序。
我们都知道 Crystal 和 Delphi 有时会不稳定,最糟糕的是,几乎没有关于错误的详细信息。此外,网络上关于此问题的文档非常缺乏。很多人遇到类似的问题,但没有解决方案。
我特别要说的错误是下图中的错误。当尝试在屏幕上打印任何 Crystal Reports 时,就会发生这种情况。
这种情况有时会发生在客户的计算机上,我们很难在我们的环境中复制。由于它是旧版本的 Crystal,因此很难找到任何有用的文档来了解问题的确切来源。
答案1
注册表问题可能是由 BDE 的双重安装引起的。发生这种情况的原因有多种:
- 重新安装了应用程序或 Borland,之前没有卸载它
- 卸载尚未完全完成
- 使用 BDE 安装了第二个应用程序
为了验证这一点,我进入注册表并发现了以下内容:
[HKEY_LOCAL_MACHINE\SOFTWARE\Borland\Database Engine]“DLLPath”=“C:\Program Files\Common Files\Borland Shared\BDE”的形式为path1,path2。
现在,为了解决这个问题,您需要执行以下操作:
- 请备份 BDE Key,以防万一出现问题。
- 关闭您的应用程序。
- 打开 Regedit(开始 > 运行 > regedit.exe)
- 转到 HKEY_LOCAL_MACHINE \ SOFTWARE \ Borland \ Database Engine
- 然后双击 DLLPath 编辑项和 2 个路径中的 1 个(根据您的安装检查哪个是正确的)。您应该有两条路径,如下图所示。删除其中一条
这应该只有一条路径,如下图所示。
关闭 RegEdit
现在您可以重新打开应用程序并尝试打开屏幕上的任何报告。如果您正确遵循了这些简单的步骤,则不会出现任何错误,并且您应该能够在屏幕上看到报告。
这尤其发生在我的应用程序中,但在使用 Crystal Reports 和 BDE Admin 的应用程序上需要遵循相同的过程。
答案2
每次我在使用 Crystal 8.5 时遇到此类错误,都与 Crystal 部署 DLL 的混合版本或缺失有关。就我而言,我使用的是 Crystal 6.0,我们的一些客户仍在使用它。
最无聊的部分是找到所有 DLL 并删除它们。通常它们在 x86 系统上位于 %systemroot%\system32,在 x64 系统上位于 %systemroot%\syswow64。
其他注意事项:
- 设置一个起点,我的意思是,我们总是确保它在干净的机器上运行。
- 在同一台机器上安装多个版本的 Crystal Reports 根本行不通,就是这样。无论您谈论的是开发环境还是部署环境。
- 我通常将所有 Crystal 8.5 部署 DLL 放在 %systemroot%\crystal 下,并将其放在系统 PATH 上。这解决了 95% 最常见的部署相关问题。
我知道回答有点晚了,但它可以帮助其他人。