我在SSRS中创建报告时遇到上述错误。我试图从2个数据库中获取2个数据集,我这样做是通过创建一个包含来自Dataset1的数据的主报表,以及一个包含另一个数据集的子报表。
当我创建同一数据集的子报表时,错误消失了。关于我可能做错了什么的任何想法?
见下面的截图:
执行以下操作时会发生错误:
答案 0 :(得分:69)
一般来说,从我所看到的SSRS有一个最坏的错误,知道什么是错误。一般来说,我已经看过这个,罪魁祸首是三件事之一:
当您插入'子报告'您可以右键单击并选择'属性'。它有一个'参数'你需要选择侧面板,你需要添加' (按正确的顺序和类型划分每个人)a'姓名' (报告的参数名称)和匹配的'值'从目前的报告传入其中。
EG:所以,如果我有一个子报告,希望客户在其上显示人口统计信息,并且我有一个主报告,其中包含每行每个客户ID的业务数据行。如果我的子报告采用了' CustomerID'参数我会为名称选择,然后选择' [Customer_ID]'从当前的数据集传递给它。
你必须记住,你必须添加'子报告所需的每个单独参数。
答案 1 :(得分:14)
从项目解决方案文件夹中删除所有 * .rdl.data 。
答案 2 :(得分:8)
如果您更改了子报表的名称并在预览中收到此错误,则只需在预览模式下单击“刷新”图标。
缓存数据以加快预览速度。子报表以相同的方式处理。
希望这有帮助。
答案 3 :(得分:0)
我刚刚遇到这个错误,当我从主报告中删除子报告然后将其粘贴回去时,我发现它已经消失了 - 去图
答案 4 :(得分:0)
@djangojazz:非常感谢这些技巧。我的答案是#2和#3。 如果有人遇到同样的问题,我会详细说明:
针对同一错误收到了不同的消息:
解决方案:
希望这有助于某人。
答案 5 :(得分:0)
就我而言,我的子报表中出现了VB脚本错误。 我试图访问一个变量,该变量只能从报表标题中访问(当前页面编号和总页面编号)。
解决了这个错误之后,错误消失了。
也许这些信息有助于某人。
答案 6 :(得分:0)
刚出现这个问题 - 奇怪的是它是由于子报表维度 - 它太宽而不适合主报表中的占位符,因此它会抛出这个完全没有用的错误。
答案 7 :(得分:0)
我也一直在处理这个问题。我的问题是因为我在子报表中重命名了数据集,但没有更改表达式中的数据集字段。
例如: 原始数据集名称:dsOriginal 新数据集名称:dsNew
原始表达式:=First(Fields!Field1.Value, "dsOriginal")
新表达式应为:=First(Fields!Field1.Value, "dsNew")
我相信它说找不到子报表的原因是因为子报表定义无效,因此它不会编译它。它使您无法知道可能是什么问题。
希望这对其他有帮助的人有帮助。
答案 8 :(得分:0)
2019年在这里|如果接受的答案无效,或者互联网上的所有答案无效:
我已经弄清了什么是“真正的”问题,并在浪费了数小时之后才提出解决方案,以便向您保证现在可以节省时间。
简而言之:一旦开始在子报表中使用参数,就会出现问题。原因是Visual Studio开始使用比用于生成主报表的rdlc xml文件结构新的文件。
这里无法用语言解释解决方案,所以我制作了一个录像,长度为1:30。
https://www.youtube.com/watch?v=Cwd5yHUq1W0
答案结束。
1-在指定位置找不到子报表。
原因:子报表的文件结构与主报表的文件结构不同,主报表可能在rdlc xml标准版本2008上运行,而子报表在2016版本上运行。一旦您使用“参数” “
2-子报表的数据检索失败
原因:您没有为子报表提供所需的数据/数据集/数据源,而是需要在主报表遇到子报表时向要调用的主报表注入事件侦听器。 有关更多信息,请在此处观看我的完整视频:
3个子报表无法显示
在执行子报表代码或子报表事件侦听器期间发现任何异常以查找问题,运行vs调试模式并观察输出窗口时,就会发生这种情况
答案 9 :(得分:0)
这是自2019年12月以来Adel Mourad回答的后续措施,但有几点警告。我也碰到了这一点,却忘记了设计师的变化。我参加了VS2017,无论出于什么原因,设计师都不见了。不知道如何/何处/为什么/ Windows更新或什么。无论如何,在重新安装设计器之后,我也对运行报告的更新存在问题。
很少有注释来澄清视频中的内容。开头的报告名称空间更改为const pool = mysql.createPool({
host: 'localhost',
user: 'root',
database:'node-complete',
password: 'Pratik@123'
});
,我将其更改回2016
。
第二,从他的视频来看,但是很小。哪里去除
2008
您只想删除外部的两个<ReportSections>
<ReportSection>
<Body...>
</ReportSection>
</ReportSections>
和ReportSections
部分。 ReportSection
,因为这是报告的实际内容。
最后,最后一部分是报告参数。您可以保留Leave the body
,但保留下面的全部ReportParameters
。
为什么,我现在只能推测主报表运行的是2008版本名称空间,因此,当它进入试图运行2016命名空间的子报表时,这将导致它阻塞。我敢打赌,建议如果主报告和子报告都在2016年设计的,那会很好。
再次,功劳归功于Adel Mourad对我的回答。