3

表达方式

=FormatNumber(Avg(CInt(Code.FirstSplit(Fields!AvgLOSC4.Value)), 0), 0)

当我尝试在 SSRS 管理器中更新我的报告时,会导致以下错误消息。

“文本框‘textbox16’的值表达式具有对聚合函数无效的范围参数。范围参数必须设置为字符串常量,该常量等于包含组的名称、包含组的名称数据区域,或数据集的名称。(rsInvalidAggregateScope)。

如何解决问题以消除此消息?我搜索了该消息,但由于某种原因,搜索结果对我来说没有意义。

更新 #1 上面的表达式是这样的

=FormatNumber(Avg(CInt(Fields!AvgLOSC4.Value.Split("|"c)(0))), 0)

在我更改它以解决不同的问题之前。

4

3 回答 3

4

什么:

聚合函数在指定范围内计算它们的值。因此,当您使用 Sum 函数时,这回答了您得到哪一组字段的总和的问题。范围可以是整个数据集,也可以是 Tablix 中的组之一。这就是为什么您可以=Sum(Fields!Quantity.Value)在表格的总计行以及可能存在的任何小计行中使用函数的原因。

聚合函数的第二个参数允许您显式指定您希望它在哪个作用域上运行。因此,在小计中,您可以使用它=Sum(Fields!Quantity.Value, "DataSet1")来检索总计,通常用于百分比计算之类的事情。如果不使用第二个参数,聚合函数将使用该单元格的默认范围。

有一篇 MSDN 文章详细概述了表达式范围:https ://msdn.microsoft.com/en-us/library/dd255256.aspx#Anchor_1

当您使用第二个参数使聚合函数使用无效范围时,会出现错误消息“对聚合函数无效的范围参数”。SSRS 的引擎不知道要对哪一组字段进行操作,因此无法继续。

为什么:

这就是错误消息的含义。至于它为什么会出现在这里以及如何在这种特定情况下修复它,错开表达式并查看正在使用的参数可能会很有用:

=FormatNumber
(
    Avg
    (
        CInt(Code.FirstSplit(Fields!AvgLOSC4.Value))
!!      , 0
     )
    , 0
)

此表达式使用 0 作为 Avg 聚合函数的第二个参数。0 不是有效范围,因此该函数会产生错误。解决这个问题很简单:删除此参数或将其替换为有效值。

于 2016-09-24T17:01:26.010 回答
0

这对我来说很好:

=FormatNumber(Avg(CInt(Code.FirstSplit(Fields!AvgLOSC4.Value))), 0, 0)

甚至:

=FormatNumber(Avg(CInt(Code.FirstSplit(Fields!AvgLOSC4.Value))), 0)

仅取决于您的格式要求是什么。

您还可以使用Format属性在文本框级别设置格式,而不是尝试使用表达式。

于 2013-04-04T20:26:43.497 回答
-2

分组“页面”的隐藏表达式具有对聚合函数无效的范围参数。范围参数必须设置为字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。

于 2016-08-23T08:11:25.400 回答