SSRS错误 - “报表项表达式只能引用当前数据集范围内的字段,或者如果在汇总

时间:2017-07-12 12:10:46

标签: sql-server reporting-services sql-server-2016

我是SSRS的新手,我不确定它是否能做我想做的事。

我在SSRS中遇到以下错误:

“文本框'Textbox17'的值表达式引用字段'DayCnt'。报表项表达式只能引用具有当前数据集范围的字段,或者如果在聚合内部,则引用指定的数据集范围。字段名称中的字母必须使用正确的大小写。“

我有一个3行3列的列表。我需要跨行和列使用多个数据集。我希望报告中的所有内容都分组在学校ID上,每个数据集都有。

在某些情况下,我将在每个单元格中使用多个数据集,并且我正在使用文本框,然后将数据集字段拖入其中。我不确定分组是否是问题。我不确定如何一次分组整个列表,或者它是否基于行,或者分组如何与具有多列的列表一起使用。

如何让列表中的所有内容都基于学校ID?

感谢您的帮助。

enter image description here

3 个答案:

答案 0 :(得分:4)

您不能仅在一个SSRS表上使用不同的数据集。一个表应该只引用一个数据集。

问题的解决方案是:重新创建数据集(查询),如果它们位于不同的服务器实例上,则尝试使用分布式查询获取一个数据集,或者当它们位于同一服务器上时指定数据库名称。

答案 1 :(得分:0)

可以引用同一数据区域(表格等)中的多个数据集,但前提是在所有数据集上使用聚合函数是有意义的,除了您的分组所属的主要数据集基于。我不确定这是否对你的用例有意义。

聚合函数类似于First。如果未指定数据集,则默认为“当前数据集”。据我所知,当前数据集是一个不可见的默认值,您无法在UI中的任何位置查看或设置。

=First(Fields!MyField.Value)

VS

=First(Fields!MyField.Value, "MyDataset")

现在,要了解Report Builder UI,还有一些棘手的事情。

  • 将字段拖到报表中时,其创建的表达式 指定数据集。
  • 将字段拖到报表中时, 会更改当前数据集!

这会导致令人恼火的行为,例如:

  1. 创建数据区域。
  2. 将其分组设置为Dataset1
  3. 中的字段
  4. 拖动Dataset1
  5. 中的字段
  6. 运行报告。它有效!
  7. Dataset2的字段中拖动。 RB会自动使用聚合函数,正如您所期望的那样。
  8. 再次运行报告。现在您收到错误,而不是在您的任何一个字段上,而是在您的数据区域的分组上。
  9. 问题是,从Dataset2拖出字段会将当前数据集更改为Dataset2,并在没有明确指定的情况下破坏使用Dataset1的所有内容。解决方案很糟糕:

    1. Dataset2手动更改所有字段的表达式,以便明确引用该数据集。
    2. 通过拖动Dataset1中的字段并删除它来重置当前数据集。

答案 2 :(得分:0)

您可能已经对数据集进行了一些修改,但没有刷新字段。