Reporting services 什么是;对聚合函数无效的作用域参数";什么意思?

Reporting services 什么是;对聚合函数无效的作用域参数";什么意思?,reporting-services,Reporting Services,表情 =FormatNumber(平均值(CInt(code.FirstSplit(Fields!AvgLOSC4.Value)),0),0) 当我尝试在SSRS管理器中更新报告时,会导致以下错误消息 文本框“textbox16”的值表达式有一个作用域参数,该参数对聚合函数无效。该作用域参数必须设置为一个字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。(RSINVALIDAGGERGATESCOPE) 如何解决此问题以删除此邮件?我搜索了这条消息,但由于某种原因,搜索结果对

表情

=FormatNumber(平均值(CInt(code.FirstSplit(Fields!AvgLOSC4.Value)),0),0)

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

文本框“textbox16”的值表达式有一个作用域参数,该参数对聚合函数无效。该作用域参数必须设置为一个字符串常量,该常量等于包含组的名称、包含数据区域的名称或数据集的名称。(RSINVALIDAGGERGATESCOPE)

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

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

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

在我更改它以修复其他问题之前。

这对我来说很好:

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

=FormatNumber(Avg(CInt(Code.FirstSplit(Fields!AvgLOSC4.Value))), 0)
这取决于您的格式要求


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

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

什么:

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

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

有一篇MSDN文章详细介绍了表达式范围:

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

原因:

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

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

此表达式使用0作为Avg聚合函数的第二个参数。0不是有效的作用域,因此函数生成错误。解决方法很简单:删除此参数或用有效值替换它。

您使用的是什么版本的SSRS?我猜是2005年;我敢打赌,您使用的是矩阵报告项。是吗?这个问题特别问“这是什么意思”