SSRS 错误 - “报表项表达式只能引用当前数据集范围内的字段,或者如果在聚合内
SSRS Error - "Report item expressions can only refer to fields within the current dataset scope or, if inside an aggregate
我是 SSRS 的新手,我不确定它是否会做我想做的事情。
我在 SSRS 中收到以下错误:
"The Value expression for the text box 'Textbox17' refers to the field 'DayCnt'. Report item expressions can only refer to fields withing the current dataset scope or, if inside an aggregate, the specified dataset scope. Letters in the names of fields must use the correct case."
我有一个 3 行 3 列的列表。我需要跨行和列使用多个数据集。我希望报告中的所有内容都根据每个数据集都有的学校 ID 进行分组。
在某些情况下,我将在每个单元格中使用多个数据集,并且我正在使用一个文本框,然后将数据集字段拖入其中。我不确定分组是否是问题所在。我不确定如何一次对整个列表进行分组,或者它是否基于行,或者分组如何与具有多列的列表一起使用。
如何让列表中的所有内容都基于学校 ID?
感谢您的帮助。
您不能仅在一个 SSRS table 上使用不同的数据集。一个 table 应该只引用一个数据集。
您的问题的解决方案是:重新创建您的数据集(查询),如果它们位于不同的服务器实例上,则尝试使用分布式查询获取一个数据集,或者当它们位于同一服务器上时指定数据库名称。
您可以引用同一数据区域中的多个数据集(table,等等),但前提是对所有数据集使用聚合函数有意义除了您的分组所基于的主要数据集之外的数据集。我不确定这对您的用例是否有意义。
聚合函数类似于First
。如果您不指定数据集,则默认为“当前数据集”。据我所知,当前数据集是一个不可见的默认值,您无法在 UI 中的任何位置看到或设置它。
=First(Fields!MyField.Value)
对比
=First(Fields!MyField.Value, "MyDataset")
现在,关于 Report Builder UI。
需要了解一些棘手的事情
- 将字段拖入报表时,它创建的表达式不会指定数据集。
- 当您将字段拖到报表中时,它 会更改当前数据集!
这会导致令人恼火的行为,例如:
- 创建一个数据区域。
- 将其分组设置为来自
Dataset1
的字段。
- 从
Dataset1
拖入一个字段。
- 运行 报告。有效!
- 从
Dataset2
拖入一个字段。正如您所期望的那样,RB 将自动使用聚合函数。
- 运行再次报告。现在你得到一个错误,不是在你的任何一个字段上,而是在你的数据区域的分组上。
问题是从 Dataset2
拖入字段将当前数据集更改为 Dataset2
并破坏了使用 Dataset1
的所有内容而没有明确指定它。解决方案是 hacky:
- 手动更改所有字段的表达式
Dataset2
以便它们明确引用数据集,或者
- 通过从
Dataset1
拖入一个字段并将其删除来重置当前数据集。
您可能对数据集做了一些修改,但没有刷新字段。
我是 SSRS 的新手,我不确定它是否会做我想做的事情。
我在 SSRS 中收到以下错误:
"The Value expression for the text box 'Textbox17' refers to the field 'DayCnt'. Report item expressions can only refer to fields withing the current dataset scope or, if inside an aggregate, the specified dataset scope. Letters in the names of fields must use the correct case."
我有一个 3 行 3 列的列表。我需要跨行和列使用多个数据集。我希望报告中的所有内容都根据每个数据集都有的学校 ID 进行分组。
在某些情况下,我将在每个单元格中使用多个数据集,并且我正在使用一个文本框,然后将数据集字段拖入其中。我不确定分组是否是问题所在。我不确定如何一次对整个列表进行分组,或者它是否基于行,或者分组如何与具有多列的列表一起使用。
如何让列表中的所有内容都基于学校 ID?
感谢您的帮助。
您不能仅在一个 SSRS table 上使用不同的数据集。一个 table 应该只引用一个数据集。
您的问题的解决方案是:重新创建您的数据集(查询),如果它们位于不同的服务器实例上,则尝试使用分布式查询获取一个数据集,或者当它们位于同一服务器上时指定数据库名称。
您可以引用同一数据区域中的多个数据集(table,等等),但前提是对所有数据集使用聚合函数有意义除了您的分组所基于的主要数据集之外的数据集。我不确定这对您的用例是否有意义。
聚合函数类似于First
。如果您不指定数据集,则默认为“当前数据集”。据我所知,当前数据集是一个不可见的默认值,您无法在 UI 中的任何位置看到或设置它。
=First(Fields!MyField.Value)
对比
=First(Fields!MyField.Value, "MyDataset")
现在,关于 Report Builder UI。
需要了解一些棘手的事情- 将字段拖入报表时,它创建的表达式不会指定数据集。
- 当您将字段拖到报表中时,它 会更改当前数据集!
这会导致令人恼火的行为,例如:
- 创建一个数据区域。
- 将其分组设置为来自
Dataset1
的字段。 - 从
Dataset1
拖入一个字段。 - 运行 报告。有效!
- 从
Dataset2
拖入一个字段。正如您所期望的那样,RB 将自动使用聚合函数。 - 运行再次报告。现在你得到一个错误,不是在你的任何一个字段上,而是在你的数据区域的分组上。
问题是从 Dataset2
拖入字段将当前数据集更改为 Dataset2
并破坏了使用 Dataset1
的所有内容而没有明确指定它。解决方案是 hacky:
- 手动更改所有字段的表达式
Dataset2
以便它们明确引用数据集,或者 - 通过从
Dataset1
拖入一个字段并将其删除来重置当前数据集。
您可能对数据集做了一些修改,但没有刷新字段。