【问题标题】:Multiple databases in Crystal reportsCrystal 报表中的多个数据库
【发布时间】:2016-04-12 02:11:48
【问题描述】:

我有 10 个通过 ODBC 链接的 Postgres 数据库,我在 Crystal Reports 中使用这些数据库。 这 10 个数据库都是相同的,相同的架构和表。

我需要同时查询所有 10 个数据库,以获得一份合并报告。这可能吗?如果是这样,我如何链接数据库以获得合并数据?

我将使用 SQL 查询来绘制数据。

提前致谢

【问题讨论】:

  • 是的,您可能需要使用子报表...一个数据库的子报表。但是如果您访问 10 个数据库,那么性能会下降...
  • 谢谢,我会调查的。性能不会成为问题,因为它只是用于整合数据的一次性报告。当我按照您的建议成功启动并运行时会提供反馈

标签: postgresql crystal-reports


【解决方案1】:

正确的方法是在 Crystal 报表之外处理数据源。我对 Postgres 不熟悉,不知道是否可以链接表或数据库。在 SQL server 中可以使用链接服务器,在 MS Access 链接表中,Postgres 中应该有类似的概念。这个想法是链接数据库外部的对象并在数据库内部使用它。这将允许您准备这样的查询:

从 server1.database1.table1 中选择 A、B、C 联盟 从 server2.database1.table1 中选择 A、B、C 联盟 从 server3.database1.table1 中选择 A、B、C ... 联盟 从 server10.database1.table1 中选择 A,B,C

此查询(或视图)将包含所有信息,您可以以此为基础创建 Crystal 报表。 Crystal 将只使用一个数据库,即包含查询的数据库,而查询将处理其他数据库以收集数据。与将所有 10 个数据库的连接直接添加到 Crystal 报表的方法相比,这将快得多。

我不认为子报表在这里是一个选项。每个子报表将连接到一个单独的数据库,您将获得 10 个单独的子报表。您可能会获得所有数据,但它将针对每个子报表进行排序,因此第一个数据库的 A->Z 以及第二个数据库的 A->Z 等等。将有 10 个独立的数据集,它们将一起显示,但仍会像单独的记录集一样。

如果 Postgres 不支持链接数据库,您可以使用 Access 数据库作为代理,只需链接您的表并将其用作一个地方,它将合并数据

【讨论】:

  • 很好的解决方案确实为此 +1.... 但是在这里澄清一件事,如果您为所有 10 个数据库创建一个查询,那么该查询将如何处理数据库登录以及什么是查询检索时间。
  • 登录将由链接处理。当您添加链接服务器或链接表时,您需要提供连接信息,它将保存在代理数据库中。在最坏的情况下,检索时间将与 Crystal 检索数据时相同。通常情况会更好,因为数据将由数据库引擎而不是 Crystal 处理。
  • 我在access中链接了数据库,但是由于表名相同,重复的都在表的末尾有一个数字。如何将所有 100 个表链接到它们的双胞胎,以便可以将其视为 100 个表而不是 1000 个表? (100 个表 x 10 个数据库)
  • 您不能将 2 个表链接为一个。您将有 2 个表,名称真的无关紧要,因为您要编写这样的查询 select A,B,C from table1 union select A,B,C from table2 union ... select A,B,C从表 100。此查询将返回所有 100 个表中的数据,您可以在单个 SQL 中对其进行过滤
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多