如何在此SSRS表达式中“指定数据集汇总”?

问题描述 投票:4回答:2

我在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'的值表达式直接引用字段'Week',而不指定数据集聚合。当报表包含多个数据集时,数据区域之外的字段引用必须包含在聚合函数中,指定数据集范围(rsFieldReferenceAmbiguous)获得在线帮助文​​本框'textboxPercentageValue'的Value表达式直接指向字段'Variance',而未指定数据集聚合。当报表包含多个数据集时,必须在数据区域之外使用字段引用包含在指定数据集范围的聚合函数中(rsFieldReferenceAmbiguous)获取在线帮助文本框“ textboxPercentageValue”的“值”表达式直接引用“价格”字段,而未指定数据集汇总。当报表包含多个数据集时,数据区域外部的字段引用必须包含在指定数据集范围的聚合函数中。 (rsFieldReferenceAmbiguous)获取在线帮助文本框“ textboxPercentageValue”的“值”表达式直接引用“方差”字段,而未指定数据集汇总。当报表包含多个数据集时,数据区域外部的字段引用必须包含在指定数据集范围的聚合函数中。 (rsFieldReferenceAmbiguous)

因此,我需要做些什么来使此表达式/公式与SQL Server Reporting Services或VBScript解析器或“任何人”抱怨的表义一致?

reporting-services vbscript bids rdl aggregates
2个回答
9
投票

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

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

因此,如果字段“ WK1”来自数据集“ MyDataset1”,则引用该字段的表达式将类似于:

=Sum(Fields!WK1, "MyDataset1")

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


0
投票

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

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

© www.soinside.com 2019 - 2024. All rights reserved.