我几年前编写的一个 Windows 应用程序最近需要进行一些更改(最初用 VS2005 编写,使用 VS2008 修改,现在更新/修改为 VS2012 项目)。
该应用程序包含一个包含两个子报告的 Microsoft 报告。ReportViewer1.LocalReport.SubreportProcessing
子报表数据是一个数据集,在事件期间填充。
向主报告添加了一个新字段,但未修改子报告。该报告在开发 PC 上按预期工作,但是当安装在客户端笔记本电脑上时,子报告失败并显示以下消息:-
Data retrieval failed for the sub-report, <report name>, located at <report...rdlc>. Please check the log files for more information
客户端笔记本电脑上不生成日志文件
我尝试手动安装 CTP 2012 Microsoft Report 查看器,但安装失败,报告已存在较新版本(可能来自 SQL Server Express 2012,也同时安装)。
用于测试的数据库是从实时备份中恢复的,所以数据是一样的。添加ReportDataSource
到子报告的子报告事件包含一个不会引发任何异常的 try-catch 块
在开发过程中,当我在 VS2012 中打开报告时,会打开一个对话框,询问是否应该将它们更新为 2012 格式,我允许这样做,尽管这可能与故障无关。
有没有人遇到过这个问题?有没有办法强制客户端笔记本电脑上的日志文件的物理输出?
更新
在代码中放入一些 MessagesBoxes 我找到了子报告不处理的原因,但我现在需要找出原因。
'LocalReport_SubreportProcessing' 事件为我的报告触发两次 - 每个子报告触发一次。
为了确定哪个子报表需要额外的数据源,我检查了“SubreportProcessingEventArgs.ReportPath”的值。在我的开发系统中,它具有报告的名称(减去 .rdlc 扩展名),但在客户端笔记本电脑上,该值为空。
我看不到报告是如何内置到输出中的。主报告在笔记本电脑上显示正常(只是缺少子报告),虽然我目前不知道从哪里显示 - 需要更多调查!