假设我的数据源是一个标准化数据表,其中每一行代表从这样的农田中收获的一卡车谷物。
Field Acres Bushels
A 50 500
A 50 600
B 40 550
B 40 600
B 40 500
C 50 500
C 50 450
我希望我的RDLC报告能够总结这些信息,如下所示:
Field Acres Total Bushels
A 50 1100
B 40 1650
C 50 950
Totals 140 3600
我尝试了几种不同的方法(在Field上分组并在Field和Acres上分组)但在每种情况下,我的三个字段的总亩数总计为320。
我目前正在使用单一级别的分组,在Field和Acres上分组。然后我添加一个总行,其中我想显示英亩的分组值的总和,但似乎我无法使用scoping来完成此任务,因为从外部范围引用内部范围是非法的。具体来说,如果我尝试Sum(Fields!Acres.Value, "Field")
,则会收到错误,因为在场字段上的分组是内部整体分组。
在ReportItem上使用聚合似乎也是违法的。也就是说,如果我将包含英亩的文本框命名为'txtAcres',则在我的总计行中不允许使用表达式Sum(ReportItem!txtAcres.Value)
。
请注意:我相信任何涉及总结不同值的解决方案都会给出不正确的总英亩数90(因为我们有两个字段,正好占地50英亩)
答案 0 :(得分:0)
我提交这个作为答案,但我认为这更像是一种解决方法。我仍然希望RDLC中有一个干净的解决方案来处理这个常见且简单的问题。
我在我的数据源中添加了另一个名为PartialAcres的列,其定义如下:
t.Acres * t.Bushels / (Select sum(Bushels) from Loads where Field = T.Field)
as PartialAcres
Field Acres Bushels PartialAcres
A 50 500 22.7272
A 50 600 27.2727
B 40 550 13.3333
B 40 600 14.5454
B 40 500 12.1212
C 50 500 26.3158
C 50 450 23.6842
现在我可以在任何分组级别使用表达式Sum(Fields!PartialAcres.Value)
来获得正确的总英亩数。