您的位置:首页 > 运维架构

WIN7SP1 Crystal Reports异常:System.Runtime.InteropServices.ComException(0x800003E7)

2015-12-16 20:26 585 查看

异常描述:

CrystalDecision.CrystalReports.Engine.InternalException:文件:c:\users\TQTZS_03\AppData\Local\temp_914a…{…}.rpt 内出错:尚未执行操作->System.Runtime.InteropServices.ComException(0x800003E7)

软件开发及运行环境:

该软件采用C# + .net3.5 + Crystal Reports Basic for Visual Studio 2008 (10.5.0.3700.0) + vs2008 开发(c/s),运行在Win7 SP1 x86系统上。

问题出现:

软件在多台机器上使用,在2015-12-11日部分机器在生成报表时出现上述异常,部分机器上的软件可正常生成报表;出现异常的机器上的软件是两张报表无法正常生成,其余十几张报表可正常生成。

问题分析

在不能正常生成报表的机器上进行源代码调试,发现不能生成的报表异常出现在转出PDF的过程中,

ReportModel.Twenty_firstReport report = new ReportModel.Twenty_firstReport();
//。。。。。。省略
report.ExportToDisk(CrystalDecisions.Shared.ExportFormatType.PortableDocFormat, exprtDocPath + "Twenty_first.PDF");


在调用ExportToDisk将报表导出到PDF时出现异常

问题处理

搜索网络资源发现在12月份较多的出现相同的问题,其中Operation not yet implemented error in PDF export这里面的讨论比较详细,同时也给出了问题的解决方案。

解决分析

问题的根源在Windows6.1-KB3102429-x86.msu这个windows系统补丁(KB3102429),补丁信息,在补丁更新信息中可以查看该补丁的更新内容,其中指出在 Crystal 报告版本 9 (Crystal 9) 以及版本 10 (Crystal 10),”导出为 pdf 格式”功能无法正常工作。究其原因,是该补丁当中对字体版本的更新,具体包含哪些字体在补丁更新信息中有列举更新后的字体版本号,如果在crystal report中用到这其中的字体,在将报表导出PDF的过程中就可能出现本文最初所述异常( Arial,Times New Roman确定会引发异常,其他更新字体未逐项确认)。

处理方法

针对异常的处理方法是卸载更新KB3102429,或者用未安装KB3102429的机器上的字体(本文程序用Times New Roman)替换已安装更新的机器上的字体;当然也可以修改自己的程序,避免使用KB3102429中更新的字体。个人感觉这是微软更新引发的crystal report问题,修改程序中报表采用的字体感觉像是程序的bug,维护时间已经太长了,修改后还得打包然后挨个机器进行安装(用户只管使用),而且用户很快就会换B/S版,也不再采用水晶报表了,因此直接更换字体版本完事!

Operation not yet implemented error in PDF export这里面的讨论过程中还涉及到了一些其他的分析问题的方法,值得学习。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: