reporting-services - "scope parameter that is not valid for an aggregate function"是什么意思?

标签 reporting-services

表达式

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

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

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

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

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

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

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

最佳答案

内容:

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

关于reporting-services - "scope parameter that is not valid for an aggregate function"是什么意思?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15818657/

相关文章:

iframe - 通过 SharePoint 2013 中的 iframe 集成来自 Reporting server 2016 的报告

c# - ReportViewerWebPart报表打印错误如何处理?

jquery - ReportViewer 控件在 WebForm 上呈现太宽

c# - 如何获取通过 SSRS 生成的 pdf 字节数组的页数

html - 在 SSRS 报告中显示 HTML 页面

javascript - 如何在SSRS报告中的新窗口中打开URL?

c# - 如何修复错误 MC1000 未知构建错误, 'Could not find type ' System.Web.UI.TagPrefixAttribute'

sql-server - 通过经典 ASP 将凭据传递给报告服务

sql-server - 删除 SSRS 中回车符的表达式

ssrs-2008 - 为什么我在设置参数 "parameter is missing a value"或 "Hidden"后出现 "Internal"错误?