在Crystal Reports 11中独立报告多个表

时间:2012-01-30 08:44:52

标签: crystal-reports crystal-reports-xi

我正在使用Crystal Reports Developer Studio创建一个报告两个不同表的报告,让它们成为“ATable”和“BTable”。对于我最简单的任务,我想通过使用Total Running Fields报告每个表的计数。我为ATable创建了一个(称为ATableTRF),当我在报告上发布时,会发生这种情况:

1)SQL查询(显示SQL查询)显示:

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

2)读取的总记录数是ATable中的记录数。

3)我得到的数字是正确的(ATable中的总记录数。)

同样适用于BTableTRF,如果我删除ATableTRF,我得到:

1)SQL查询(显示SQL查询)显示:

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

2)读取的总记录数是BTable中的记录数。

3)我得到的数字是正确的(BTable中的总记录数。)

当我将两个字段都放在报告上时,

问题就出现了。接下来发生的是我一个接一个地得到两个查询(因为这些表没有在水晶报告中链接):

SELECT "ATABLE"."ATABLE_KEY"
FROM   "DB"."ATABLE" "ATABLE"

SELECT "BTABLE"."BTABLE_KEY"
FROM   "DB"."BTABLE" "BTABLE"

并且记录读取的数量远远大于每个表 - 它不会停止。我会验证它的计数(ATable)xcount(BTable),但这会超出我的计算机的限制(可能 - 一个是大约300k行,另一个是大约900k行)。

我只想报告两张桌子的数量。不需要任何交互 - 但是水晶以某种方式强制执行交互。

任何人都可以帮忙吗?

谢谢!

2 个答案:

答案 0 :(得分:1)

除非有一些连接描述两个表的关系,否则结果将是笛卡尔积。尝试使用两个子查询(通过SQL命令或单独的SQL表达式)来获取行计数。例如:

select count(distinct ATABLE_KEY) from ATABLE

如果除了行数之外你对这些表中的任何其他内容不感兴趣,那么就没有理由将所有这些行都带入Crystal中 - 更好地在RDBMS上进行繁重的工作。

答案 1 :(得分:0)

你可以联合两个查询。这将为您提供一个记录集,其中包含来自每个查询的行一次。