如何在这个 SSRS 表达式中 "specify a dataset aggregate"?

How can I "specify a dataset aggregate" in this SSRS Expression?

我的 SSRS 报告中需要一个行值,该行值是根据报告中已使用的几个字段计算得出的。我希望它显示在名为 'textboxPercentageValue' 的文本框中。在半普通英语中,expression/formula 是:

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 属性的 expression/formula 是:

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

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

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

那么我需要做什么才能使 expression/formula 明确表示 SQL 服务器报告服务或 VB 脚本解析器或 "whoever" 正在抱怨它?

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

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

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

=Sum(Fields!WK1, "MyDataset1")

另请参阅:Using Dataset Fields Collection References in Expressions

这是一个有趣的问题,因为如果您的报告中只有 1 个数据集,则不需要 table,您可以直接引用存在于 table 中的字段.

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