SSRS错误-“报告项目表达式只能引用当前数据集范围内的字段,或者如果是聚合内的字段,

JM1*_*JM1 1 sql-server reporting-services sql-server-2016

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

我在SSRS中遇到以下错误:

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

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

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

我如何才能根据学校ID获得列表中的所有内容?

谢谢您的帮助。

在此处输入图片说明

LON*_*ONG 5

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

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


No *_*o U 5

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

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

=First(Fields!MyField.Value)
Run Code Online (Sandbox Code Playgroud)

对比

=First(Fields!MyField.Value, "MyDataset")
Run Code Online (Sandbox Code Playgroud)

现在,有一些关于报表生成器 UI 的棘手问题需要了解。

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

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

  1. 创建数据区域。
  2. 将其分组设置为来自 的字段Dataset1
  3. 从 中拖入一个字段Dataset1
  4. 运行报告。有用!
  5. 从 中拖入一个字段Dataset2。正如您所期望的那样,RB 将自动使用聚合函数。
  6. 再次运行报告。现在您收到一个错误,不是关于您的任何一个字段,而是关于您的数据区域的分组。

问题在于,在字段中拖动 fromDataset2将当前数据集更改为Dataset2并破坏了Dataset1未明确指定使用的所有内容。解决方案是hacky:

  1. 手动更改所有字段的表达式,Dataset2以便它们显式引用数据集,或
  2. 通过拖入一个字段Dataset1并将其删除来重置当前数据集。