无法使用RDLC

时间:2016-06-18 20:56:39

标签: c# rdlc reportviewer

假设我的数据源是一个标准化数据表,其中每一行代表从这样的农田中收获的一卡车谷物。

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英亩)

1 个答案:

答案 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)来获得正确的总英亩数。