【问题标题】:Crystal Report VerifyDatabase not working水晶报表验证数据库不工作
【发布时间】:2009-12-11 21:01:35
【问题描述】:

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

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

所以问题是,除了设置连接信息、参数和调用 VerifyDatabase 方法之外,Crystal 应用程序中的验证数据库功能有什么不同我应该在代码中执行的操作吗?

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

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

错误仍然存​​在。

【问题讨论】:

  • 这里涉及到什么版本的 Crystal 和 dotNET?
  • .NET 3.5和Crystal 10.5,VS2008自带的版本。
  • 所以当您说“在 Crystal Reports 应用程序中手动验证它”时,您指的是 Visual Studio IDE 中的 Crystal 设计器?
  • 不,我指的是使用 Crystal Reports 应用程序。报告都存储为动态加载的外部 .rpt 文件。

标签: c# crystal-reports


【解决方案1】:

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

在我看来,在部署报告之前确保数据库同步(已验证)是一种更好的做法,这样您就不需要每次都调用 VerifyDatabase。

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

【讨论】:

  • 谢谢雷。我对问题添加了编辑。 dev数据库和live一模一样,是备份的,我手动验证过,还是报错。我想知道不同的默认数据库排序规则是否会导致问题。
  • 有时我讨厌Crystal... 排序是一种可能性,尽管我猜这会导致排序问题而不是丢失字段。开发与生产上是否可以运行不同版本的 Crystal?对相关字段的选择权限可能有问题吗?
【解决方案2】:

这听起来像是两个版本的 Crystal 及其功能之间的混淆。 dotNET 2008 附带的版本是 Crystal Reports Basic for VS2008,伪装成 Crystal 10.5(不作为独立产品存在)。但是,如果您指的是他们在 Visual Studio IDE 之外开发的独立报表,那么这将是具有某些功能差异的 Crystal 的不同版本。我想说此报告是在与其他报告不同的 Crystal 版本中创建的,并且代码中的验证遇到​​了 10.5 无法识别的某些功能。 如果您有 Crystal 的独立版本(需要是 Crystal Reports 2008 或早期版本的开发人员版),请使用 this 以确保您在应用程序中使用与中相同的 Crystal 版本报告开发。

【讨论】:

  • 谢谢。这些报告是在 XI 中创建的,这与 VS2008 附带的 10.5 不同。但为什么报表在一个环境(运行时为 10.5)中正常运行,而在相同运行时的另一个环境中运行不正常呢?
  • 实时数据库和开发数据库有什么区别?如果它们在结构上相同,则根本不需要验证。
【解决方案3】:

您能验证一下吗:

在调试器运行时,如果类型化数据集中的架构发生更改并且您运行验证数据库,则消息框始终显示“数据库是最新的”,即使这两个架构存在差异。

这花了我一段时间才弄清楚,因为当调试器处于活动状态时,验证数据库操作未被禁用。

【讨论】:

  • 谢谢。我没有使用类型化数据集,而是直接连接到报表中的数据库。
猜你喜欢
  • 1970-01-01
  • 2010-10-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多