依次调用SetSQLCommandTable和SetTableLocation时出现错误"找不到表"。

2020-09-19 03:04发布

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

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


您好,我有一个麻烦的问题,我似乎无法解决。 在我的代码中,我遍历报告中子报告的集合,并更新每个表或命令的连接信息。 我们有一些报告同时引用了命令和表-我知道这并不理想,但这是我的现实! 问题出在 SetSQLCommandTable 调用上-似乎损坏了某些东西,导致我随后对 SetTableLocation 的调用失败,并出现表未找到错误。 如果我注释掉 SetSQLCommandTable 行,它就可以正常工作!

我检查了对象是否有修改,尝试创建一个单独的 ConnectionInfo 对象以传递给 SetSQLCommandTable 调用,但是似乎没有什么不同。 如果我注释掉该行(并为该报表手动为Crystal中的Command设置数据库连接信息),一切正常。

这是代码, ReplaceCatalogueInCommand 是一个帮助程序,用于修复报告中命令中对数据库名称的任何硬编码引用...因为用户有时会以这种方式编写命令,即使我们只会 在报告范围内只有一个数据库... grrr!

我正在使用13.0.3500.0,Service Pack 22,并且报告

CrystalDecisions.CrystalReports.Engine.ReportDocument boTable CrystalDecisions.ReportAppServer.DataDefModel.Table()

 foreach(Report.ReportClientDocument.SubreportController.GetSubreportNames()中的字符串subRerpotName)
 {
     boTables = Report.ReportClientDocument.SubreportController.GetSubreport(subRerpotName).DatabaseController.Database.Tables;

     对于(int i = 0; i 
 

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

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


您好,我有一个麻烦的问题,我似乎无法解决。 在我的代码中,我遍历报告中子报告的集合,并更新每个表或命令的连接信息。 我们有一些报告同时引用了命令和表-我知道这并不理想,但这是我的现实! 问题出在 SetSQLCommandTable 调用上-似乎损坏了某些东西,导致我随后对 SetTableLocation 的调用失败,并出现表未找到错误。 如果我注释掉 SetSQLCommandTable 行,它就可以正常工作!

我检查了对象是否有修改,尝试创建一个单独的 ConnectionInfo 对象以传递给 SetSQLCommandTable 调用,但是似乎没有什么不同。 如果我注释掉该行(并为该报表手动为Crystal中的Command设置数据库连接信息),一切正常。

这是代码, ReplaceCatalogueInCommand 是一个帮助程序,用于修复报告中命令中对数据库名称的任何硬编码引用...因为用户有时会以这种方式编写命令,即使我们只会 在报告范围内只有一个数据库... grrr!

我正在使用13.0.3500.0,Service Pack 22,并且报告

CrystalDecisions.CrystalReports.Engine.ReportDocument boTable CrystalDecisions.ReportAppServer.DataDefModel.Table()

 foreach(Report.ReportClientDocument.SubreportController.GetSubreportNames()中的字符串subRerpotName)
 {
     boTables = Report.ReportClientDocument.SubreportController.GetSubreport(subRerpotName).DatabaseController.Database.Tables;

     对于(int i = 0; i 
 

付费偷看设置
发送
3条回答
愤怒的猪头君
1楼 · 2020-09-19 03:31.采纳回答

谢谢你们的想法。

Don,事实证明,我完全使用该工具生成了原始代码-因此,除了我注意到更改为使用 CrystalDecisions.ReportAppServer.ClientDoc.ISCDReportClientDocument 之外,没有其他新内容了 CrystalDecisions.CrystalReports.Engine.ReportDocument 。 我调整了代码以使用工具中生成的代码-但这确实有所作为。

在Ido关于调用SetSQLCommandTable时表的顺序更改的评论中进行了评论-我已经注意到了,但是事实并非如此。

我尝试进行的操作-鉴于我注意到的行为,其中忽略了对SetSQLCommandTable的调用不会导致问题,我更改了代码以遍历表,仅更新表的连接信息,然后再次设置boTables集合- 这次只更新了Commands的连接信息-这成功了! 首先,"更新的命令"总是会在随后的表更新中导致错误,但之后执行更新似乎很好。

SetSQLCommandTable方法中可能有一些问题正在调查中……与此同时,您应用更新的连接信息的顺序似乎很重要!

干杯!

clever101
2楼-- · 2020-09-19 03:45

一个猜测:
也许SetSQLCommandTable调用导致Database内部表的顺序发生变化。Tables
这会导致boTables [i]指向的内容出现问题。

路亽曱_Ryan
3楼-- · 2020-09-19 03:35

如果将子报表另存为CRD中的新报表,然后在应用程序中为其设置位置,会发生什么情况?

您要设置表格链接

使用Google搜索此KBA-1553921,看看使用RAS的ReplaceConnection是否效果更好

一周热门 更多>