使用 clng 函数对多个数据集进行 SSRS 计算

SSRS Calculations with multiple datasets using clng function

我有一份包含 3 个数据集的报告。每个数据集都从不同的数据仓库中提取数据,但都提取相同的数据。在我的报告结束时,我有一个 table 从每个数据集中获取总计,我已经成功地对正常总计字段完成了此操作。但是,有些字段是百分比。下面是我在文本框中的表达式示例。

我正在使用一个数据集从 table 中获取现有表达式,并尝试添加每个数据集中的值,以便获得总百分比。

字段使用 1 个数据集

=Code.SafeDivideVariance(Sum(CLng(Fields!TP_Sales_Retail.Value)), 
Sum(CLng(Fields!LY_Sales_Retail.Value)))

合并所有数据集的字段

=Code.SafeDivideVariance(
Sum(CLng(Fields!Field1.Value, "Dataset1")) +
Sum(CLng(Fields!Field1.Value, "Dataset2")) +
Sum(CLng(Fields!Field1.Value, "Dataset3")) +
, 
Sum(CLng(Fields!Field2.Value, "Dataset1")) +
Sum(CLng(Fields!Field2.Value, "Dataset2")) +
Sum(CLng(Fields!Field2.Value, "Dataset3"))
)

但是,当我尝试这样做时,出现以下错误。 “textrun 的值表达式包含错误:[BC30198] ) 预期。

Error

UPDATE 我添加了两个字段,其中一个字段的代码为

=Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset1") + 
Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset2") +  
Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset3")

另一个

=Sum(CLng(Fields!LY_Sales_Retail.Value), "Dataset1") + 
Sum(CLng(Fields!LY_Sales_Retail.Value), "Dataset2") + 
Sum(CLng(Fields!LY_Sales_Retail.Value), "Dataset3")

我收到以下错误

The value expression for the text box 'Textbox11' has a scope parameter that is not valid for an aggregate function. The scope parameter must be set to a string constant that is equal to either the name of a containing group, the name of a containing data region, or the name of a dataset.

即使我只是尝试,我也会得到同样的错误

=Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset2")

更新 2.0

这里是报表设计,dataset 2 和 3 和 dataset1 是一样的,但是他们看的是各自的数据源。

Report design 1

Report design 2

Report Design 3

前 3 个 table 正在查看单个数据源。最后一个 table 看起来像数据集 1,但我正在对每个字段中所有 3 个的总和求和。

Report Layout

我现在无法对此进行测试,但请尝试以下操作

=Code.SafeDivideVariance(
Sum(CLng(Fields!Field1.Value), "Dataset1") +
Sum(CLng(Fields!Field1.Value), "Dataset2") +
Sum(CLng(Fields!Field1.Value), "Dataset3") +
, 
Sum(CLng(Fields!Field2.Value), "Dataset1") +
Sum(CLng(Fields!Field2.Value), "Dataset2") +
Sum(CLng(Fields!Field2.Value), "Dataset3")
)

我认为需要指定范围的是 out 聚合函数(在您的情况下为 SUM)。您的原始代码的范围是 CLng 函数

的一部分

更新 我实际上看不出有什么不对。我已经用一些示例数据进行了测试,它按预期工作。

我建议您添加 2 个文本框来显示您传递给自定义函数的每个值的结果。可能那里有问题。例如第一个文本框会将 vaule 表达式设置为

=Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset1") + Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset2") +  Sum(CLng(Fields!TP_Sales_Retail.Value), "Dataset3")

确保您在此处看到的值符合您的预期。

如果这不起作用,请编辑您的问题并显示一些样本数据,以便我重现该问题。就目前而言,它正在按预期工作。

数据集输入错误,与我的实际数据集名称不匹配。 set中的S需要大写。

=Code.SafeDivideVariance(
Sum(CLng(Fields!Field1.Value), "DataSet1") +
Sum(CLng(Fields!Field1.Value), "DataSet2") +
Sum(CLng(Fields!Field1.Value), "DataSet3") +
, 
Sum(CLng(Fields!Field2.Value), "DataSet1") +
Sum(CLng(Fields!Field2.Value), "DataSet2") +
Sum(CLng(Fields!Field2.Value), "DataSet3")
)