【问题标题】:Crystal report - Running thru .NET水晶报表 - 通过 .NET 运行
【发布时间】:2009-07-17 23:17:20
【问题描述】:

我使用测试数据库创建了一份水晶报告。我使用 .NET ReportDocument 类运行报告。在我连接到测试数据库之前一切正常。

当相同的报告指向 UAT DB(所有必需的 DB 对象在 UAT 中也可用)时,我收到错误。要解决此问题,我必须在 RPT 文件中手动将服务器名称更改为 UAT DB。

如何解决这个问题?

【问题讨论】:

    标签: c# .net vb.net crystal-reports


    【解决方案1】:

    一种解决方案是创建一个系统 DSN (ODBC) 以连接到您的目标数据库。然后,您可以将 ODBC 切换到您想要的任何数据库(本地、测试、阶段等)。此外,如果您确保所有服务器上都有同名的 ODBC 连接,则从 dev->test->stage->production 移动报告应该很容易。

    【讨论】:

      【解决方案2】:

      使用push reports 应该可以解决您的问题。您可以将报表设置为接受强类型 ADO.NET 数据集,并在运行时提供该数据集。

      【讨论】:

      • 不,我没有使用任何 ADO.NET 数据集。该报告与数据库对象直接对话。我唯一要做的就是在运行时发送连接详细信息。
      • AFAIK,你不能。报表维护自己的数据库设置,这些设置在设计时设置,在运行时无法更改。
      【解决方案3】:

      这不是它应该如何工作的吗?它必须知道它连接到什么数据库?

      也许我遗漏了什么,但听起来您只需要正确连接即可。

      【讨论】:

      • Crystal 报表可以在两种基本模式下运行:推式或拉式。我见过的大多数报告都使用 pull,它将连接数据存储在报告类中。当报告必须独立存在时很好,但在更大的应用程序范围内,它是一个 PITA,因为每当代码移动到不同的服务器(即 dev -> test)时,都必须手动更改报告数据源-> 生产)。推送报表让报表接受来自外部源的数据,其中可以包括一个 ADO.NET 数据集,该数据集集中了连接的详细信息。
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多