SSRS从子组到父组的总计

时间:2014-10-23 11:53:45

标签: reporting-services reporting crm

我正在尝试计算父组中单元格“Anzahl”中已过滤子组的总和。正如您在示例屏幕截图中看到的那样,子组中有两个数字15和5,父组中的单元格显示24而不是20。

截图:

https://dl.dropboxusercontent.com/u/17838009/screenshot.jpg https://dl.dropboxusercontent.com/u/17838009/screenshot2.jpg

=Countrows("table1_dc_evn_vpkn") 

这会抛出错误:“scope参数必须设置为一个字符串常量,该常量等于包含组的名称,包含数据区域的名称或数据集的名称。”

所有使用=Sum=Count=IIF查询的尝试都会产生错误的结果,因为它会在没有子组过滤器的情况下进行计算。

我也试过一些自定义代码:

Public Total As Integer =0

Public Function Sum(ByVal Value As Integer) As Integer
    Total = Total + Value
    Return Value
End Function

这也不起作用。

我正在寻找访问来自父组的子组单元格内容的可能性。我想类似于:

=Sum(ReportItems!Textbox90.Value)

由于以下原因不起作用:“聚合函数只能用于页眉和页脚中包含的报表项目。”

如何计算已过滤子组的总和?

2 个答案:

答案 0 :(得分:1)

您应该将要应用的聚合函数放在组页眉或页脚中。这样,任何过滤或分组也将应用于它们。此外,您通常应将聚合函数应用于字段值,而不是报告项目。

如果需要将数据放在分组行之外,可以将聚合函数的scope参数设置为报告中组的名称。 scope参数是传递给聚合函数的第二个可选参数。在你的情况下(我认为)该组的名称是“table1_dc_evp_vpkn”。所以你的聚合表达式看起来像:

=Sum(Fields!FieldName.Value, "table1_dc_evp_vpkn")

scope参数将聚合限制为报表中的范围。当您想要从组内部或报告的其他过滤部分引用整个数据集的聚合时,这可以派上用场,因为您可以将范围设置为数据集本身的名称,并且它将在没有字段的情况下进行聚合。

答案 1 :(得分:0)

尝试Sum(Max(Fields!FieldNameValue,“ childGroupName”))。在“总和”级别进行分组没有任何意义。您要在开始求和之前应用此组。