27

在 SSRS 中创建报告时出现上述错误。我正在尝试从 2 个数据库中获取 2 个数据集,我通过创建一个包含来自 Dataset1 的数据的主报告和一个包含另一个数据集的子报告来做到这一点。

当我创建同一数据集的子报表时,错误消失了。关于我可能做错了什么的任何想法?

请看下面的截图:

相同的数据集

相同的数据集

当我执行以下操作时会发生错误:

在此处输入图像描述

在此处输入图像描述

4

10 回答 10

82

一般来说,从我所看到的情况来看,SSRS 在告诉你什么是错误的时候有人类已知的最严重的错误。一般来说,我见过这个,罪魁祸首是三件事之一:

  1. 由于您对子报表进行了更改并且报表数据不是最新的,因此需要重新构建项目。
  2. 报告数据在某些方面已损坏,需要删除(查看您的 FILE 位置并删除 *.rdl.data 文件。)
  3. 您传入的参数不正确或格式错误。所有具有参数的子报表都需要传入,否则它们将不会运行并给出相当于“对象设置为空实例”的错误。

当您插入“子报表”时,您可以右键单击并选择“属性”。它有一个您需要选择的“参数”侧面板,您需要“添加”(按正确的顺序和类型为每个面板)一个“名称”(报告的参数名称)和匹配的“值”目前的报告传递给它。

EG:因此,如果我有一个希望客户显示其人口统计信息的子报表,而我有一个主报表,其中包含多行业务数据,每行都有一个客户 ID。如果我的子报表采用“CustomerID”参数,我会将其作为名称并从当前数据集中选择“[Customer_ID]”以传递给它。

您必须记住,您必须“添加”子报告所需的每个单独参数。

于 2013-07-11T19:53:48.540 回答
17

从您的项目解决方案文件夹中删除所有*.rdl.data 。

于 2015-08-17T06:44:54.270 回答
11

如果您更改了子报表的名称并在预览中遇到此错误,只需在预览模式下单击“刷新”图标。

缓存数据以便更快地预览。子报表的处理方式相同。

希望这可以帮助。

于 2015-11-01T19:23:02.410 回答
7

2019 来了 | 如果接受的答案不起作用,如果互联网上的所有答案都不起作用:

我已经弄清楚了什么是“真正的”问题,并在浪费了数小时后为它找到了解决方案,所以我向你保证你现在正在节省时间。

简而言之:一旦您开始对子报告使用参数,问题就会出现,原因是 Visual Studio 开始使用比用于构建主报告的更新的 rdlc xml 文件结构。

解决方案无法在这里用文字来解释,所以我制作了一个修复视频,长度为 1:30。

https://www.youtube.com/watch?v=Cwd5yHUq1W0

回答完毕。

根据经验,您将面临的主要和流行问题+错误的实际含义和原因:

1- 在指定位置找不到子报表。

原因:子报表的文件结构与主报表的文件结构不同,主报表可能在 rdlc xml 标准版本 2008 上运行,而子报表在 2016 版本上运行。一旦使用“参数”就会发生这种情况

2-子报表的数据检索失败

原因:你没有给子报表它需要的数据/数据集/数据源,你需要给主报表注入一个事件监听器,以便在主报表遇到子报表时调用。欲了解更多信息,请在此处观看我的完整视频:

3-子报表无法显示

当执行子报表代码或子报表事件侦听器期间发生任何异常时,就会发生这种情况,以查找问题,运行 vs 调试模式并观察输出窗口

于 2019-12-05T18:13:48.160 回答
0

我刚刚遇到这个错误,当我从主报告中剪切子报告然后将其粘贴回去时,我发现它消失了 - 去图

于 2014-01-14T14:22:54.447 回答
0

就我而言,我的子报表中有一个 VB 脚本错误。我试图访问一个变量,该变量只能从报告标题(当前页码和总页码)访问。

修复此错误后,错误消失了。

也许这些信息可以帮助某人。

于 2018-02-02T14:13:17.803 回答
0

这是 2019 年 12 月 Adel Mourad 回答的后续行动,但有一些警告。我也遇到了这个,忘记了设计师的变化。我进入了 VS2017,无论出于何种原因,设计师都走了。不知道如何/在哪里/为什么/Windows 更新或什么。无论如何,在重新安装设计器后,我也遇到了更新运行报告的问题。

很少有注释可以澄清视频中呈现的内容。开放报告命名空间更改为2016,我将其更改回2008.

其次,来自他的视频,但很小。在哪里拆除

<ReportSections>
  <ReportSection>
    <Body...>
  </ReportSection>
</ReportSections>

您只想删除外部的两个ReportSectionsReportSection部分。Leave the body因为那是报告的实际内容。

最后,在报告参数的最后一部分。你可以 KEEP ReportParameters,但下面的整个 REMOVE ReportParametersLayout

至于为什么,我现在只能推测是主报告正在运行 2008 版本的命名空间,所以当它到达一个尝试运行 2016 命名空间的子报告时,就会导致它窒息。我敢打赌并建议,如果主报告和子报告都是用 2016 年设计的,那就没问题了。

再次,归功于 Adel Mourad 对我的回答。

于 2020-06-23T19:58:21.167 回答
0

我也一直在处理这个问题。我的问题是因为我重命名了子报表中的数据集,但没有更改表达式中的数据集字段。

例如:原始数据集名称:dsOriginal 新数据集名称:dsNew

原文表达: =First(Fields!Field1.Value, "dsOriginal")

新表达式应该是:=First(Fields!Field1.Value, "dsNew")

我相信它说找不到子报表的原因是因为子报表定义无效,因此它不会编译它。它不会让您知道问题可能是什么。

希望这对其他前来寻找的人有所帮助。

于 2018-11-29T03:03:19.937 回答
0

刚刚遇到这个问题 - 奇怪的是它是由于子报表尺寸 - 它太宽而无法放入主报表中的占位符,所以它抛出了这个完全没有帮助的错误。

于 2018-02-23T13:41:56.913 回答
0

@djangojazz:非常感谢这个技巧。我的答案是#2 和#3。如果有人遇到同样的问题,我会更详细地说明:

相同的错误得到不同的消息:

  1. Visual Studio 错误列表:“[rsErrorExecutingSubreport] 执行子报表‘SubOverview’(实例:55iS1)时发生错误:对象引用未设置为对象的实例。”
  2. 报告:“错误:无法显示子报告。” 或“错误:在指定位置找不到子报表”

解决方案:

  1. 这完全是关于我错误地设置为内部的子报告的参数(来自 djangojazz 的解决方案#3)。内部是指子报表的内部而不是项目的内部。因此,无法从主报告中访问它,但 SSRS 告诉了一些完全不相关的指向错误方向的内容。(微软为此感到羞耻)
  2. 一旦我设置回“隐藏”(我不想让用户修改这些参数),问题是一样的。让我们转到第 3 点
  3. 从 djangojazz 应用解决方案 #2:删除 SubOverview.rdl.data(与我的子报告对应的那个)。
  4. 在云上的报告服务器上,我删除了报告 SubOverview 并重新启动报告的部署以更新它。这样 .rdl.data 文件也会被删除。

希望这可以帮助某人。

于 2016-06-30T12:40:03.503 回答