有没有办法回收Crystal Reports数据集?

时间:2008-08-12 10:54:54

标签: asp.net crystal-reports dataset

我正在尝试编写一份Crystal报表,其总计以与主报表不同的方式分组。到目前为止,我能够做到这一点的唯一方法是使用子报告来计算总数,但这意味着必须再次点击数据源以检索相同的数据,这看起来像废话。这是一个简化的例子:

       date   name   earnings   source          location
-----------------------------------------------------------
12-AUG-2008   Tom      $50.00   washing cars    uptown
12-AUG-2008   Dick    $100.00   washing cars    downtown     { main report }
12-AUG-2008   Harry    $75.00   mowing lawns    around town

                    total earnings for washing cars: $150.00 { subreport }
                    total earnings for mowing lawns:  $75.00

       date   name   earnings   source          location
-----------------------------------------------------------
13-AUG-2008   John     $95.00   dog walking     downtown
13-AUG-2008   Jane    $105.00   washing cars    around town  { main report }
13-AUG-2008   Dave     $65.00   mowing lawns    around town

                    total earnings for dog walking:   $95.00
                    total earnings for washing cars: $105.00 { subreport }
                    total earnings for mowing lawns:  $65.00

在此示例中,主报告按“日期”分组,但总计按“来源”进行分组。我已经查找了使用运行总计的示例,但它们并没有真正做到我需要的。是不是有某种方法来存储结果集并让主报表和子报表引用相同的数据?

2 个答案:

答案 0 :(得分:1)

在没有第二次运行数据的情况下,我能想到这样做的唯一方法是创建一些公式来为每个组运行总计。我假设您遇到的问题是现有的运行总计是他们打算跟随他们共计的每个组。由于您似乎希望在所有“原始”数据之后跟踪小计,这将无效。

如果您为每个组创建自己的公式,只需添加与该组匹配的行的总数,您就可以将它们放在报告的末尾。这种方法的缺点是,与组相关的结果小计不会是动态的。换句话说,如果你有一个新的“来源”,它将不会显示在小计中,直到你添加它或如果你没有“狗步行”数据,你仍然会有一个小计。

答案 1 :(得分:1)

嗯......从报告中调用存储的proc并将它们全部包含在一个位置就好了,但是我们发现(像你一样)你最终达到了一个你无法获得水晶的地步做你想要的,即使数据就在那里。

我们最终引入了一个位于报告下的业务层,而不是从报表中“拉”数据,我们将数据集“推送”到它并将数据绑定到报表。优点是您可以在数据集或对象到达报表之前操作数据集中的代码中的数据,然后只需将数据绑定到报表。

This article介绍了如何设置将数据推送到报告的简介。我了解您的时间/业务限制可能不允许您这样做,但如果它完全可能,我强烈推荐它,因为它意味着我们可以删除报告中的所有“编码”和托管代码好事。