6

我的 SSRS 报告中需要一个行值,该行值是根据报告中已使用的几个字段计算得出的。我希望它显示在名为“textboxPercentageValue”的文本框中。在半纯英语中,表达式/公式是:

If the value of the "Week" field is "WK1", display the value of the Variance field divided by the value of the Price field; otherwise, just display the value from the Variance field.

在 VB 脚本 gobbledygook 中,我添加到 textboxPercentageValue 的 Value 属性的表达式/公式是:

=IIF((Fields!Week.Value="WK1"), Fields!Variance.Value / Fields!Price.Value, Fields!Variance.Value)

然而,当我尝试将 .rdl 文件上传到 SQL Server Reporting Services 时,我得到:

"文本框“textboxPercentageValue”的值表达式直接引用字段“周”而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReferenceAmbiguous) 获取联机帮助文本框“textboxPercentageValue”的值表达式直接引用字段“方差”而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReferenceAmbiguous) 获取联机帮助 文本框“textboxPercentageValue”的值表达式直接引用字段“价格”而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReferenceAmbiguous) 获取联机帮助 文本框'textboxPercentageValue' 的值表达式直接引用字段'Variance',而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReference 不明确)(rsFieldReferenceAmbiguous) 获取联机帮助 文本框'textboxPercentageValue' 的值表达式直接引用字段'Variance',而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReference 不明确)(rsFieldReferenceAmbiguous) 获取联机帮助 文本框'textboxPercentageValue' 的值表达式直接引用字段'Variance',而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在指定数据集范围的聚合函数中。(rsFieldReference 不明确)"

那么我需要做些什么来使这个表达式/公式对 SQL Server Reporting Services 或 VBScript 解析器或抱怨它的“任何人”毫不含糊?

4

2 回答 2

18

听起来您的文本框已添加到不是“数据区域”的报告区域(例如表格或列表)。数据区域将对特定报表数据集的引用作为其属性之一,因此 Reporting Services 知道该数据区域内的所有字段引用都引用该数据集。这个错误试图表达的内容(以一种相当冗长的方式)是:

  • 如果您引用数据区域之外的字段,则该引用需要位于聚合表达式内,例如 Sum() - 这是因为数据集可能包含该字段的多行,但在数据区域之外,文本框只能显示单值。
  • 此聚合表达式还必须包含对该字段来自的报表数据集的引用

因此,如果字段“WK1”来自数据集“MyDataset1”,则引用该字段的表达式如下所示:

=Sum(Fields!WK1, "MyDataset1")

另请参阅:在表达式中使用数据集字段集合引用

于 2016-01-13T01:48:46.307 回答
2

这是一个有趣的问题,因为如果您的报表中只有一个数据集,则不需要表格,您可以直接引用该表格中存在的字段。

但是,如果您有超过 1 个数据集,那么您必须创建一个表,该表可能会为您提供多行。然后您可能必须按此字段进行分组,并隐藏额外的列和行。但是,您不能在 TEXTBOX 中显示此数据,但是您可以创建一个可以容纳表格和另一个文本框的矩形。或者直接显示表格。

于 2019-12-13T19:00:53.893 回答