升级到SP 21-无法转换为接口类型ISCRReportSource

2020-09-19 20:47发布

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我安装了SP 21以提供Visual Studio 2017兼容性。 我按照Wiki中给出的步骤操作,删除了现有的Crystal Reports引用,然后通过"引用"->"扩展"将其重新添加。 现在所有引用均显示为13.0.3500.0。通过C#,我将其称为ReportDocument.SetDataSource(IEnumerable)。 这将引发以下异常:

无法将类型为" CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass"的COM对象转换为接口类型为" CrystalDecisions.ReportAppServer.Controllers.ISCRReportSource"的接口。 此操作失败,因为具有以下错误的IID为" {31E7715A-8AD0-4D1C-958E-C1BE0A6F2D0C}"的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) 。

对解决方案有何想法? 到目前为止,我还没有任何运气。

         点击此处--->   EasySAP.com群内免费提供SAP练习系统(在群公告中)

加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)


我安装了SP 21以提供Visual Studio 2017兼容性。 我按照Wiki中给出的步骤操作,删除了现有的Crystal Reports引用,然后通过"引用"->"扩展"将其重新添加。 现在所有引用均显示为13.0.3500.0。通过C#,我将其称为ReportDocument.SetDataSource(IEnumerable)。 这将引发以下异常:

无法将类型为" CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass"的COM对象转换为接口类型为" CrystalDecisions.ReportAppServer.Controllers.ISCRReportSource"的接口。 此操作失败,因为具有以下错误的IID为" {31E7715A-8AD0-4D1C-958E-C1BE0A6F2D0C}"的COM组件上的QueryInterface调用由于以下错误而失败:不支持此类接口(HRESULT异常:0x80004002(E_NOINTERFACE)) 。

对解决方案有何想法? 到目前为止,我还没有任何运气。

付费偷看设置
发送
8条回答
1楼 · 2020-09-19 21:10.采纳回答

您好,尼古拉斯,

是的,很遗憾,由于平台更新,无法避免这种情况。 删除了对VC 2005 C ++运行时的依赖,并更新为较新的版本/支持Framework 4.7。

如果您在下载页面上阅读了 SP21发行版中的新功能 ,则会在其中注明:

2。 Microsoft Windows Update KB2999226是SP21的先决条件

4。 由于大多数CR/RAS .NET程序集现在已从13.0.2000.0转换为13.0.3500.0,因此用户必须从"引用"列表中删除所有旧的CR程序集,并添加新版本的CR程序集,然后重新构建应用程序。

a。 对于那些不想重建其应用程序的客户/用户,有一种解决方法可以在app.config/web.config中使用,请参阅附件。

我尚未在较早版本的测试应用程序中对此进行测试,但是有一个文件可以添加到与exe相同的位置,并且无需重新构建应用程序即可正常工作。

但是,我们建议您进行重建,因为最终MS会停止支持和更新较旧的Framework,这将迫使您无论如何都要升级。 修复/添加可能会迫使您使用的内容时,R&D将使用更新的版本。

这是因为MS不再支持VC 2005 C ++依赖关系,所以我们的编译器现在使用VS 2015。

再次感谢

Don

空代码
2楼-- · 2020-09-19 21:16
Doze时光
3楼-- · 2020-09-19 21:10

你好,

您正在使用什么数据源和DB Client驱动程序?

Don

野沐沐
4楼-- · 2020-09-19 21:25

我们使用一些sql查询从SQL Server填充List ,处理该数据,然后使用List 作为数据源。
< br>

 var dataSource = new List (); 
//从SQL填充dataSource ...
//处理结果数据

var reportDoc = new ReportDocument(); reportDoc.Load(<晶体文件路径>);
reportDoc.SetDataSource(dataSource); //这里发生错误
三十六小时_GS
5楼-- · 2020-09-19 21:29

调用ReportDocument.PrintToPrinter

时,我得到了完全相同的异常

这里我们不调用SetDataSource,而是设置ConnectionInfo和相关设置以连接到我们的SQL Server。

在初始化打印驱动程序后出现问题,因为打印任务在后台打印程序中排队,然后才将异常抛出,然后再将任何实际数据发送到打印机。

落灬小鱼
6楼-- · 2020-09-19 21:23

这是我们从Microsoft升级到当前C ++支持的二进制文件所要付出的代价。

无论如何,您都应该向所有用户部署相同的版本。

落灬小鱼
7楼-- · 2020-09-19 21:25

我终于设法找到了解决方案。 某些水晶参考显示为13.0.3500.0,但我并未真正删除它们并重新安装它们,仅显示了13.0.3200。

因此,我重新进行了整个过程,并删除了所有项目中的所有Crystal引用,重新添加了它们,它们终于起作用了。

一周热门 更多>