"此字段名称未知。" 从ReportDocument.Load(),那么如何验证数据库?

2020-09-22 19:39发布

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

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


使用以下 VB.NET ,我有一个Crystal Report文件甚至无法加载。 a>代码:

将objRptDoc设为新的CrystalDecisions.CrystalReports.Engine.ReportDocument()
 objRptDoc.Load(" C:\ path \ to \ my.rpt")


它将引发CrystalDecisions.Shared.CrystalReportsException
消息:加载报告失败。
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()在CrystalDecisions.CrystalReports.Engine.ReportDocument .Load(String filename,OpenReportMethod openMethod,Int16 parentJob)
在CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)

InnerException类型为System.Runtime.InteropServices.COMException

消息:该字段名称未知。
详细信息:errorKind
我的17320_16748_ {19E5E493-1D64-4084-8E97-6395D78D94EB} .rpt文件中出现错误:
公式小计标签中的错误:< br>'如果{Invoice.ForeignSubTotal} = {Invoice.ForeignTotalAmount},则此字段名称未知。
详细信息:CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass上的errorKind

。 .Open(Object&DocumentPath,Int32选项)
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&Doc umentPath,Int32选项)
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

现在,我或多或少地知道问题出在哪里……如果我在Crystal Designer中打开报表,执行"验证数据库"并将其保存,它将可以正常工作。 但是我希望能够通过自己的代码自动执行此操作,而不是告诉用户他们需要在报表上运行"验证数据库"(尤其是因为用户可能无法访问Crystal报表设计器)。 通常,我会调用ReportDocument.VerifyDatabase()方法,但是假设我已经将报表加载到ReportDocument对象中。 由于我什至无法加载报告,因此无法调用VerifyDatabase。

关于如何实现此目标的任何建议?

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

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


使用以下 VB.NET ,我有一个Crystal Report文件甚至无法加载。 a>代码:

将objRptDoc设为新的CrystalDecisions.CrystalReports.Engine.ReportDocument()
 objRptDoc.Load(" C:\ path \ to \ my.rpt")


它将引发CrystalDecisions.Shared.CrystalReportsException
消息:加载报告失败。
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()在CrystalDecisions.CrystalReports.Engine.ReportDocument .Load(String filename,OpenReportMethod openMethod,Int16 parentJob)
在CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename)

InnerException类型为System.Runtime.InteropServices.COMException

消息:该字段名称未知。
详细信息:errorKind
我的17320_16748_ {19E5E493-1D64-4084-8E97-6395D78D94EB} .rpt文件中出现错误:
公式小计标签中的错误:< br>'如果{Invoice.ForeignSubTotal} = {Invoice.ForeignTotalAmount},则此字段名称未知。
详细信息:CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass上的errorKind

。 .Open(Object&DocumentPath,Int32选项)
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&Doc umentPath,Int32选项)
在CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()

现在,我或多或少地知道问题出在哪里……如果我在Crystal Designer中打开报表,执行"验证数据库"并将其保存,它将可以正常工作。 但是我希望能够通过自己的代码自动执行此操作,而不是告诉用户他们需要在报表上运行"验证数据库"(尤其是因为用户可能无法访问Crystal报表设计器)。 通常,我会调用ReportDocument.VerifyDatabase()方法,但是假设我已经将报表加载到ReportDocument对象中。 由于我什至无法加载报告,因此无法调用VerifyDatabase。

关于如何实现此目标的任何建议?

5条回答
SKY徐
1楼 · 2020-09-22 20:06.采纳回答

有趣...。因此,看来您唯一的选择是专门测试内部异常并弹出消息框"该报告仅要求在CR Designer中验证数据库,CR SDK无法执行此操作 在运行时"

我在打开之前从未见过此错误,它确实表明该报告严重依赖该字段。 因为引擎会将所有对象加载到内存中,然后在打开时对其进行验证,所以唯一的选择是首先修复报告。

我仍然希望这份报告,以便我可以通过R&D通过,以查看我们是否可以改善Open ...上的问题。

再次感谢

Don

粗暴的香蕉
2楼-- · 2020-09-22 19:54
OK,我已将问题.rpt文件的副本 此处

谢谢!

N-Moskvin
3楼-- · 2020-09-22 20:15

您正在使用哪个版本的CR for VS?

更高版本不会测试公式字段,除非您特别检查它们。

Don

95年老男孩
4楼-- · 2020-09-22 19:54

嗨,我使用的是Visual Studio 13 SP21(13.0.21.2533)的CR开发人员。

我将查看是否可以提供演示该问题的.rpt文件。

打个大熊猫
5楼-- · 2020-09-22 20:05

感谢您的举报。

我在事件处理程序中收到此错误,我有多个错误,因此不确定是哪个错误触发了该错误。 单击CR查看器,您将能够看到可以触发的事件。


公式看起来很正常

我也收到错误消息,保存的数据将在CR中丢弃

一周热门 更多>