0

我在 VS 2003 下的 Crystal Reports 中的 Sum 字段存在问题。我正在使用 VS 2003 和 Crystal Reports 生成一个报表,其中包含从 SQL Server 2000 数据库检索的数据,并在运行时保存在强类型数据集中。

数据集包含几个表,其中一个是orders表,它接收 SQL 查询的结果,该查询连接来自两个不同表的记录。在运行期间检查订单表的内容后- 就在将数据集传递给 Report 对象之前,我已经验证了相关的 SQL 查询工作正常,始终从数据库返回预期的数据。

对数据集进行迭代,每次迭代将针对不同 orderID 执行的 SQL 查询的结果合并到数据集中。SQL 查询还从与每个 orderID 相关的其他表中检索记录,并将它们放入数据集中的适当表中(orders除外)。

当我尝试将特定列(orders.order_amount列)求和到 Crystal Report 时,就会出现问题。我得到的总和是不正确的。

例如,orders表在绑定为报表的数据源时包含 3 条记录,每条记录的order_amount = $10.00。sum 字段的值不是返回 $30.00,而是 $50.00。

我看不出这是怎么发生的,我认为这要么是由于 Crystal Reports 中的错误,要么是由于我的报告中缺少项目。数据集已正确填充,但似乎 Crystal Reports 以某种方式将基于orderID检索到的相关记录混淆为订单表的记录,并添加到order_amount总和中。

如果我禁用填充相关记录的 SELECT 语句,则order_amount总和将正确显示。

有人知道为什么会这样吗?提前致谢。

射线

4

2 回答 2

1

Best guess is that the 'related records' you mention which you're disabling, is causing order_amount to appear several times as a result of parent-child relationships with your query. Can the Select statement that you're enabling/disabling cause a return of 5 rows instead of 3? If two of the 3 rows have 2 related records instead of one Crystal would read those as 5 rows and sum accordingly.

于 2009-11-12T20:43:10.797 回答
0

再次感谢你的回复。我通过在报告级别添加一些 CR 代码来检查订单数据并使用订单总额更新一些共享变量以及与报告相关的一些其他总和来解决了这个问题。

我仍然不明白为什么 CR 在我明确指定我想要的只是订单表中的记录时,将订单表记录与数据集中其他表的相关记录添加到一起。CR 似乎没有执行 Sum 操作在逻辑上暗示的内容Sum(orders.order_amount)。总之,问题解决了。感谢你的帮助。射线

于 2009-11-17T08:38:06.680 回答