SSRS 对来自多个数据集和子报告的值求和
SSRS summing values from multiple data sets and sub reports
我的 SSRS 主报表中有两个数据集和一个子报表。
我需要创建第三个 - 总计 table 或矩阵 returns 来自每个数据集和子报告的字段。
看起来像这样(开始)
首先,我构建了一个 table 并添加了一列以使用以下值对其进行测试。 (这是在总计行中)每个元素单独在各自的行中。
=ReportItems!tps_actual4.Value + ReportItems!Textbox1230.Value
tps_actual4 来自一个数据集。
Textbox1230 来自不同的数据集。
出现的第一个错误是:
"The value for the DataSetName property is missing"
如果我将我的代码更改为如下所示
=First(ReportItems!tps_actual4.Value, "Master_Data_Set") + First(ReportItems!Textbox1230.Value, "Secondary_Data")
我收到另一个错误:
The value expression for the textrun ''.. uses an aggregate function on a report item. Aggregate functions can be used only on report items contained in page headers and footers.
我们这里没有引用任何一个数据集。我不知道如何解决这个问题。
第二个问题在Textbox1230
的情况下,有6行数据,返回了6次。我如何在我的逻辑中指定一个 case 语句何时添加 Textbox1230
最后,我什至不确定如何引用子报告,因为我们还需要访问子报告中的两个字段。
谢谢。
Grand Total column1 column2
Dataset1 Values a x
Dataset2 Values b y … and so on
Subreport Values c x
Grand Total Sums a+b+c x+y+z
以上是一个 excel 采样,希望它有助于理解——列将继续第一行数据来自一个数据集。来自另一个等的第二个和总计将这些值加在一起作为总计。
您唯一能做的就是捕获来自不同 tablix 的所有总计,并在单独的 tablix 中汇总这些值。但是你不能从子报表中获取值,这只适用于实际报表中的数据集。如果您也想对子报表值求和,我建议使用@junketsu 的解决方案。
假设您的报告中有 2 个数据集,每个数据集都是另一个 tablix 的来源。在每个 tablix 中你现在需要添加一个总数
'Tablix 1 total
=Sum(Fields!TestValue.Value, "Dataset1") 'This expression is in Textbox1
'Tablix 2 total
=Sum(Fields!TestValue2.Value, "Dataset2") 'This expression is in Textbox2
现在添加第三个 tablix。在第一个文本框中写入以下表达式:
=ReportItems!Textbox1.Value
在第二个文本框中:
=ReportItems!Textbox2.Value
在第三个文本框中:
=ReportItems!Textbox1.Value + ReportItems!Textbox2.Value
第三个 tablix 的结果如下所示:
Dataset1 Total Value 11111
Dataset2 Total Value 22222
Overall Total 33333
我的 SSRS 主报表中有两个数据集和一个子报表。
我需要创建第三个 - 总计 table 或矩阵 returns 来自每个数据集和子报告的字段。
看起来像这样(开始)
首先,我构建了一个 table 并添加了一列以使用以下值对其进行测试。 (这是在总计行中)每个元素单独在各自的行中。
=ReportItems!tps_actual4.Value + ReportItems!Textbox1230.Value
tps_actual4 来自一个数据集。 Textbox1230 来自不同的数据集。
出现的第一个错误是:
"The value for the DataSetName property is missing"
如果我将我的代码更改为如下所示
=First(ReportItems!tps_actual4.Value, "Master_Data_Set") + First(ReportItems!Textbox1230.Value, "Secondary_Data")
我收到另一个错误:
The value expression for the textrun ''.. uses an aggregate function on a report item. Aggregate functions can be used only on report items contained in page headers and footers.
我们这里没有引用任何一个数据集。我不知道如何解决这个问题。
第二个问题在Textbox1230
的情况下,有6行数据,返回了6次。我如何在我的逻辑中指定一个 case 语句何时添加 Textbox1230
最后,我什至不确定如何引用子报告,因为我们还需要访问子报告中的两个字段。
谢谢。
Grand Total column1 column2
Dataset1 Values a x
Dataset2 Values b y … and so on
Subreport Values c x
Grand Total Sums a+b+c x+y+z
以上是一个 excel 采样,希望它有助于理解——列将继续第一行数据来自一个数据集。来自另一个等的第二个和总计将这些值加在一起作为总计。
您唯一能做的就是捕获来自不同 tablix 的所有总计,并在单独的 tablix 中汇总这些值。但是你不能从子报表中获取值,这只适用于实际报表中的数据集。如果您也想对子报表值求和,我建议使用@junketsu 的解决方案。
假设您的报告中有 2 个数据集,每个数据集都是另一个 tablix 的来源。在每个 tablix 中你现在需要添加一个总数
'Tablix 1 total
=Sum(Fields!TestValue.Value, "Dataset1") 'This expression is in Textbox1
'Tablix 2 total
=Sum(Fields!TestValue2.Value, "Dataset2") 'This expression is in Textbox2
现在添加第三个 tablix。在第一个文本框中写入以下表达式:
=ReportItems!Textbox1.Value
在第二个文本框中:
=ReportItems!Textbox2.Value
在第三个文本框中:
=ReportItems!Textbox1.Value + ReportItems!Textbox2.Value
第三个 tablix 的结果如下所示:
Dataset1 Total Value 11111
Dataset2 Total Value 22222
Overall Total 33333