【问题标题】:Problem with Crystal Reports水晶报表的问题
【发布时间】:2010-12-15 22:35:44
【问题描述】:

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

数据集包含多个表,其中一个表 orders 接收 SQL 查询的结果,该查询连接来自两个不同表的记录。在运行期间检查 orders 表的内容后 - 就在将数据集传递给 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 检索到的相关记录混淆为 orders 表的记录,并添加到 order_amount 总和。

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

有人知道为什么会发生这种情况吗? 提前致谢。

【问题讨论】:

    标签: asp.net crystal-reports sum


    【解决方案1】:

    最好的猜测是,您提到的要禁用的“相关记录”会导致 order_amount 由于与查询的父子关系而出现多次。您启用/禁用的 Select 语句是否会导致返回 5 行而不是 3 行?如果 3 行中有 2 行有 2 条相关记录而不是 1 条 Crystal,则将这些记录读取为 5 行并相应地求和。

    【讨论】:

      【解决方案2】:

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

      当我明确指定我想要的只是订单表中的记录时,我仍然不明白为什么 CR 会添加数据集中其他表中的相关记录和订单表记录。 CR 似乎没有做 Sum 操作在逻辑上暗示的事情,即 Sum(orders.order_amount)。总之,问题解决了。 感谢你的帮助。 雷

      【讨论】:

        猜你喜欢
        • 2010-09-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2016-04-18
        相关资源
        最近更新 更多