客户端VS Crystal Rpts上的错误

2020-09-07 15:31发布

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

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


一旦在客户端计算机上部署了c#应用程序中的报表,当我尝试查看报告时,就会遇到很多错误。

在Visual Studio中,我具有适用于CrystalReports.Design,Engine,ReportSource和Shared的13.0.35版,但我在.NET的Crystal Reports上显示了13.0.20。

在客户端上,我安装了32位运行时,该运行时在Add/Rmv程序中显示为版本13.0.19.2312。

我的应用程序结构包括多个项目文件,大多数文件都编译为Console App类型,并从主项目中调用。 大多数报告位于这些子项目文件中。

最初,我的报告为"构建操作=内容并复制到输出目录=复制(如果较新)

这是加载报告的代码:


ReportDocument cryRpt = new ReportDocument(); 字符串路径= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()。Location);
路径= System.IO.Path.Combine(Path," Reports \\ Purchases_List_Rpt.rpt"); < br> cryRpt.Load(Path);
cryRpt.SetDataSource(ds.Tables [0]); Pur_Reports rpts =新的Pur_Reports();
rpts.reportSrce = cryRpt;
rpts.Text ="采购清单";
rpts.Show();
rpts = null;

//Pur_Reports只是带有Crystal Report Viewer控件的表单。 下面是on__load代码

this.crystalReportViewer1.ReportSource = reportSrce;
this.crystalReportViewer1.Refresh();

在开发中,上述方法效果很好。 没问题。 但是,我意识到在部署过程中,由于应用程序结构的原因,这些报告不会以相同的方式进行复制。

因此,我将报告类型更改为"嵌入式"。 我将跳过关于无法加载数据的其他数百万个错误,等等,并说这时我有一个空白报告(无数据源),我正尝试从我的* Main *项目文件(不是 子控制台应用程序),仍然有麻烦。

这是基于现在嵌入的代码更改:

ReportDocument myRpt =新的ReportDocument();

myRpt.Load(" CrystalReport1.rpt");

这在我的开发机器上仍然有效。 在已部署的应用程序上,出现错误:

"加载报告失败"错误; "无法在C ++堆栈中打开由JRC引擎处理的文档"

所以,为了娱乐起见,我又将其作为内容而不是嵌入式,并使用了

ReportDocument cryRpt = new ReportDocument(); 字符串路径= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()。Location);
路径= System.IO.Path.Combine(Path," CrystalReport1.rpt");

cryRpt.Load(Path);
....

这给了我"无法将类型为" CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass"的COM对象转换为接口类型为" CrystalDecisions.ReportAppServer.Controllers.ISCRReportSource"的接口。 此操作失败,因为在Com组件上对该接口的QueryInterface调用......由于以下错误而失败:不支持此类接口。

到目前为止,Google并没有帮助我,我希望可以在这里找到答案。 我对Dev文件与客户端计算机上的版本代码有所担心,但据说它们都是最新的和最出色的。

先谢谢了。

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

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


一旦在客户端计算机上部署了c#应用程序中的报表,当我尝试查看报告时,就会遇到很多错误。

在Visual Studio中,我具有适用于CrystalReports.Design,Engine,ReportSource和Shared的13.0.35版,但我在.NET的Crystal Reports上显示了13.0.20。

在客户端上,我安装了32位运行时,该运行时在Add/Rmv程序中显示为版本13.0.19.2312。

我的应用程序结构包括多个项目文件,大多数文件都编译为Console App类型,并从主项目中调用。 大多数报告位于这些子项目文件中。

最初,我的报告为"构建操作=内容并复制到输出目录=复制(如果较新)

这是加载报告的代码:


ReportDocument cryRpt = new ReportDocument(); 字符串路径= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()。Location);
路径= System.IO.Path.Combine(Path," Reports \\ Purchases_List_Rpt.rpt"); < br> cryRpt.Load(Path);
cryRpt.SetDataSource(ds.Tables [0]); Pur_Reports rpts =新的Pur_Reports();
rpts.reportSrce = cryRpt;
rpts.Text ="采购清单";
rpts.Show();
rpts = null;

//Pur_Reports只是带有Crystal Report Viewer控件的表单。 下面是on__load代码

this.crystalReportViewer1.ReportSource = reportSrce;
this.crystalReportViewer1.Refresh();

在开发中,上述方法效果很好。 没问题。 但是,我意识到在部署过程中,由于应用程序结构的原因,这些报告不会以相同的方式进行复制。

因此,我将报告类型更改为"嵌入式"。 我将跳过关于无法加载数据的其他数百万个错误,等等,并说这时我有一个空白报告(无数据源),我正尝试从我的* Main *项目文件(不是 子控制台应用程序),仍然有麻烦。

这是基于现在嵌入的代码更改:

ReportDocument myRpt =新的ReportDocument();

myRpt.Load(" CrystalReport1.rpt");

这在我的开发机器上仍然有效。 在已部署的应用程序上,出现错误:

"加载报告失败"错误; "无法在C ++堆栈中打开由JRC引擎处理的文档"

所以,为了娱乐起见,我又将其作为内容而不是嵌入式,并使用了

ReportDocument cryRpt = new ReportDocument(); 字符串路径= System.IO.Path.GetDirectoryName(System.Reflection.Assembly.GetExecutingAssembly()。Location);
路径= System.IO.Path.Combine(Path," CrystalReport1.rpt");

cryRpt.Load(Path);
....

这给了我"无法将类型为" CrystalDecisions.ReportAppServer.Controllers.ReportSourceClass"的COM对象转换为接口类型为" CrystalDecisions.ReportAppServer.Controllers.ISCRReportSource"的接口。 此操作失败,因为在Com组件上对该接口的QueryInterface调用......由于以下错误而失败:不支持此类接口。

到目前为止,Google并没有帮助我,我希望可以在这里找到答案。 我对Dev文件与客户端计算机上的版本代码有所担心,但据说它们都是最新的和最出色的。

先谢谢了。

付费偷看设置
发送
1条回答
代楠1984
1楼 · 2020-09-07 15:45.采纳回答

请勿使用复制和编译功能,CR for VS只能使用当前版本,不支持多个版本的安装,也无法正常工作。

13.0.3500.0是3.5及更高版本的框架版本 ,适用于SP 21及更高版本。 13.0.2000.0是2.0版-> 3.5框架

您安装了SP 22之前的运行时,但无法正常工作,您的应用正在寻找SP 21及更高版本的运行时。

卸载 从用户PC上获得VS SP 19的CR,并安装最新版本的SP 25。

在DEV PC上下载EXE并使用SP 25重新编译。不要在应用程序中包含运行时。 MSI将GAC的大部分CR dll删除,其余的将放入SAP文件夹。

然后检查所有app.config文件,所有CR版本都需要更新到文件中的13.0.3500.0 ,GUID不变。

一周热门 更多>