Reporting services 从子组到父组的SSRS总计

Reporting services 从子组到父组的SSRS总计,reporting-services,reporting,crm,Reporting Services,Reporting,Crm,我试图计算父组中单元格“Anzahl”中已过滤子组的总和。如示例屏幕截图所示,子组中有两个数字15和5,父组中的单元格显示24而不是20 截图: 这会引发错误:“范围参数必须设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。” 所有使用=Sum、=Count和=IIF查询的尝试都会给出错误的结果,因为它在计算时没有子组的筛选器 我还尝试了一些自定义代码: Public Total As Integer =0 Public Function Sum(ByVal Va

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

截图:

这会引发错误:“范围参数必须设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。”

所有使用
=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)
这不起作用,因为:“聚合函数只能用于页眉和页脚中包含的报表项”


如何计算已筛选子组的总和?

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

如果需要将数据放在分组行之外,可以将聚合函数的scope参数设置为报告中的组名称。scope参数是传递给聚合函数的第二个可选参数。在您的情况下(我认为),集团的名称是“table1\u dc\u evp\u vpkn”。因此,您的聚合表达式如下所示:

=Sum(Fields!FieldName.Value, "table1_dc_evp_vpkn")
scope参数将聚合限制为报表中的某个范围。当您希望从组或报表的其他过滤部分中引用整个数据集的聚合时,这会很方便,因为您可以将范围设置为数据集本身的名称,并且它将聚合而不包含字段。

尝试求和(Max(fields!FieldNameValue,“childGroupName”))。在总和级别分组没有意义。您希望在开始求和之前应用此组

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