无效的字段名称错误-如何调试/确定导致问题的原因

2020-09-03 16:33发布

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

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


我已经在整个论坛和Google上进行了全面搜索,但找不到任何有助于此目的的信息。 我们最近升级到了Crystal Reports 2008(CrystalDecisions.CrystalReports.Engine-当前为12.0.2000.0版),并且特定报表存在问题。 该报告最初是在V8中创建的。 它使用SQL Server 2005数据库中的存储过程来返回报告的信息。 所有这些都可以在独立设计器中很好地验证,但是当通过Web应用程序运行它时,它尝试将报告加载到rpt.Load行时失败,并出现以下错误:

无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt
 说明:执行当前Web请求期间发生未处理的异常。
 请查看堆栈跟踪以获取有关错误及其起源的更多信息。
  在代码中。

 异常详细信息:System.Runtime.InteropServices.COMException:无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt

 堆栈跟踪:
 [COMException(0x800001fd):
 无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt]
    CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&DocumentPath,
 Int32选项)+0
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&DocumentPath,
  Int32选项)+95
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+356

 [CrystalReportsException:加载报告失败。]
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+419
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,
  OpenReportMethod openMethod,Int16 parentJob)+895
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(字符串文件名)+84 

因此,我的问题是双重的:

1。 是否可以从Crystal引擎中获取更多调试信息,以帮助确定导致此问题的字段/公式?

2。 有谁对为什么会失败有任何初步想法?

非常感谢

唐纳德

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

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


我已经在整个论坛和Google上进行了全面搜索,但找不到任何有助于此目的的信息。 我们最近升级到了Crystal Reports 2008(CrystalDecisions.CrystalReports.Engine-当前为12.0.2000.0版),并且特定报表存在问题。 该报告最初是在V8中创建的。 它使用SQL Server 2005数据库中的存储过程来返回报告的信息。 所有这些都可以在独立设计器中很好地验证,但是当通过Web应用程序运行它时,它尝试将报告加载到rpt.Load行时失败,并出现以下错误:

无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt
 说明:执行当前Web请求期间发生未处理的异常。
 请查看堆栈跟踪以获取有关错误及其起源的更多信息。
  在代码中。

 异常详细信息:System.Runtime.InteropServices.COMException:无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt

 堆栈跟踪:
 [COMException(0x800001fd):
 无效的字段名称。
 DeptUtilization {91D163E8-2AD0-4350-97AD-414D49DDFBEF} .rpt]
    CrystalDecisions.ReportAppServer.ClientDoc.ReportClientDocumentClass.Open(Object&DocumentPath,
 Int32选项)+0
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.Open(Object&DocumentPath,
  Int32选项)+95
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+356

 [CrystalReportsException:加载报告失败。]
    CrystalDecisions.ReportAppServer.ReportClientDocumentWrapper.EnsureDocumentIsOpened()+419
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(String filename,
  OpenReportMethod openMethod,Int16 parentJob)+895
    CrystalDecisions.CrystalReports.Engine.ReportDocument.Load(字符串文件名)+84 

因此,我的问题是双重的:

1。 是否可以从Crystal引擎中获取更多调试信息,以帮助确定导致此问题的字段/公式?

2。 有谁对为什么会失败有任何初步想法?

非常感谢

唐纳德

付费偷看设置
发送
2条回答
shere_lin
1楼 · 2020-09-03 17:21.采纳回答

1。 是否可以从Crystal引擎中获取更多调试信息,以帮助确定导致此问题的字段/公式?

不幸的是,就错误而言。

2。 是否有人对为什么会失败有任何初步想法?

a)应用最新的Service Pack:

https://smpdl.sap-ag.de/~sapidp/ 012002523100009038092009E/cr2008win_sp2.exe

b)在CR设计器中,启用"第一次刷新时验证"和"第一次刷新时验证存储过程"

c)如果上述方法无济于事,请创建一个新的Win应用程序作为测试。 您只需要一行代码,而无需数据库代码。 让报告提示输入数据库登录。 如果win应用程序正常运行,则可能是权限问题。

Ludek

Tong__Ming
2楼-- · 2020-09-03 17:11

不幸的是,十年后,我遇到了同样的问题。 在生成客户报告(使用TTX)时,.Net Web应用程序中包含25个子报告,在CrystalDecisions.ReportAppServer.Controllers.DatabaseControllerClass.ReplaceConnection()上将System.Runtime.InteropServices.COMException抛出为"无效的字段名称"。

在使用相同的运行时版本(CRRuntime_12_3_mlb)的情况下,在Windows应用程序中运行相同的报告可以正常工作。

在Crystal Report Editor中为有问题的子报表执行"打印预览"工作正常,没有任何抱怨。

手动查看了公式和参数字段的定义,无法找到任何潜在的错误。

25个子报表中有5个包含条形图。 正如StackTrace指出的是从ReplaceConnection()引发异常时,"无效字段名称"错误应来自参数" parameterFields"。

由于该报表正在使用Windows应用程序,因此我不知道如何从Web应用程序运行时如何识别包含25个子报表的报表的问题字段。 您可以修改CrystalDecisions.ReportAppServer程序集中的ReplaceConnection()以包括实际无效字段的名称吗? 如果可能的话,我想拥有以下测试DLL,这些DLL仅可用于在本地环境上调试(不适用于生产环境):

CrystalDecisions.ReportAppServer.ClientDoc.dll
CrystalDecisions.ReportAppServer.DataDefModel.dll
,并且在执行.SetDataSource()时也可能是CrystalDecisions.CrystalReports.Engine.dll

谢谢!

一周热门 更多>