Crystal Report VerifyDatabase无法正常工作

我有一个针对dev数据库设计的Crystal Report。 当我将它加载到实时系统时,我需要它来运行一个不同但等效的数据库。 通常我只是通过C#中的一些代码运行报告,这些代码在报告和子报告上设置连接信息,参数和调用VerifyDatabase,一切正常。

在一个特定的报告中,这不起作用,似乎没有validation任何内容,报告崩溃,其中一个子报告中出现错误“字段名称未知”。 使用此报告,如果我在Crystal Reports应用程序中针对实时数据库手动validation它,那么一切正常。

所以问题是,除了设置连接信息,参数和调用VerifyDatabase方法之外,Crystal应用程序中的validation数据库function是否有任何不同之处?

编辑:有关我尝试的更多信息

  1. 获取实时数据库的备份并将其放在我们的开发环境中。
  2. 手动validation针对此数据库的报告(与实时结构完全相同)
  3. 将报告加载到实时系统并运行它。

错误仍然存​​在。

“字段名称未知”错误通常表示您已在报表上放置字段或在公式(等)中使用该字段,但该字段在数据库中不再存在。 据我了解,调用VerifyDatabase可以更新报表中视图/表的字段列表,如果它们不再存在,可以从报表中删除字段,但不能修复依赖于缺少字段的公式或子报表链接。

在我部署报告之前,确保数据库处于同步(validation)状态似乎是一种更好的做法,因此您不需要每次都调用VerifyDatabase。

所有这一切,我不明白为什么它在手动validation后会起作用,但在调用VerifyDatabase后却不行。 有时水晶很奇怪。 您可以尝试重新创建子报表(如果它很简单),或者删除它并重新绑定它以试图欺骗错误消失。

这听起来像两个版本的Crystal及其function之间的混淆。 dotNET 2008附带的版本是用于VS2008的Crystal Reports Basic,伪装成Crystal 10.5(不作为独立产品存在)。 但是,如果您指的是在Visual Studio IDE之外自行开发的独立报表,那么这将是Crystal的不同版本,并且在function上存在一些差异。 我说这个报告是在不同版本的Crystal中创建的,而且代码中的Verify都遇到了10.5无法识别的function。 如果您有一个独立版本的Crystal(需要是Crystal Reports 2008或早期版本的Developer Edition),请使用此版本确保您在应用程序中使用与报表开发中相同的Crystal版本。

你能validation这个:

在调试器运行时,如果更改了类型化数据集中的模式并运行了validation数据库,则即使两个模式存在差异,消息框也始终显示“数据库最新”。

这花了一些时间来弄清楚因为调试器处于活动状态时未禁用validation数据库操作。