【问题标题】:What does "scope parameter that is not valid for an aggregate function" mean?“对聚合函数无效的范围参数”是什么意思?
【发布时间】:2013-03-26 23:12:39
【问题描述】:

表达式

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

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

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

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

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

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

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

【问题讨论】:

  • 您使用的是什么版本的 SSRS?我猜是 2005 年;我还敢打赌您正在使用 Matrix 报告项目。是吗?

标签: reporting-services


【解决方案1】:

这对我来说很好用:

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

甚至:

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

这取决于您的格式要求。

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

【讨论】:

  • 这个问题专门问“什么意思”
【解决方案2】:

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

【讨论】:

    【解决方案3】:

    什么:

    聚合函数在指定范围内计算它们的值。因此,当您使用 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 不是有效范围,因此该函数会生成错误。解决这个问题很简单:删除此参数或将其替换为有效值。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多