使用Crystal Reports SDK进行连接时,运行时登录数据库失败

2020-09-09 00:18发布

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

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



我有一个一次性的内部网页工具来生成报告,并使用Crystal Reports Viewer显示 ASP.Net 。 在几个论坛中,我发现有两种更新报告的数据库登录信息的方法,如下所示(请参阅 vb.net 下面的代码段):

将cnnParser用作新的ConnectionStringParser(" Default")'我编写了拉出连接字符串元素的类。  :)

 ''方法#1在ReportDocument上显式设置DataSourceConnections
 对于每个dsc,作为Report.DataSourceConnections中的IConnectionInfo
     dsc.SetConnection(cnnParser.ServerName,cnnParser.DatabaseName,cnnParser.UserID,cnnParser.Password)
 下一个

 ''方法2为每个表设置ApplyLogonInfo
 昏暗的crConInfo作为新的ConnectionInfo()'Crystal Reports ConnectionInfo类

 crConInfo.ServerName = cnnParser.ServerName
 crConInfo.DatabaseName = cnnParser.DatabaseName
 如果cnnParser.UseIntegratedSecurity然后
     crConInfo.IntegratedSecurity = True
 其他
     crConInfo.IntegratedSecurity =假
     crConInfo.UserID = cnnParser.UserID
     crConInfo.Password = cnnParser.Password
 万一

 将crLogOnInfo设置为新TableLogOnInfo
 crLogOnInfo.ConnectionInfo = crConInfo
 对于每个tbl作为Report.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table
     tbl.ApplyLogOnInfo(crLogOnInfo)
 下一个


我发现上述代码在开发中运行良好。 但是,当我部署到生产环境时,Crystal Reports Viewer开始出现"登录数据库失败"错误。 然后,我进行了一次故障排除练习,以确定所引用的库版本等。一切都已签出。 我检查了运行代码以与生产数据库进行通信是否有所不同,然后在开发环境中一切正常。 我再次检查了连接字符串是否正确。

我最终解决了该问题,尽管我不知道为什么这样做。 因此,我希望有人能告诉我为什么这样做。

这是我添加的代码:

'GetData方法从对的调用返回ADO.Net数据集
 在数据库上存储过程。
 theReport.SetDataSource(GetData(reportParameters).Tables(0))


我想知道的是以下内容:

  1. 1。 为什么向ReportDocument提供数据集可以避免"登录数据库失败"错误?
  2. 2。 除了我已经尝试过的方法之外,还有没有其他方法可以使ReportDocument连接到数据库?
  3. 3。 如果我传递了一个模式填充的空数据集,报表是否可以正常工作(即,没有"登录数据库失败"错误)? 如果是这样,为什么?

供您参考,Crystal Reports DLL版本为13.0.3500.0。

感谢您的帮助/咨询!

j。

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

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



我有一个一次性的内部网页工具来生成报告,并使用Crystal Reports Viewer显示 ASP.Net 。 在几个论坛中,我发现有两种更新报告的数据库登录信息的方法,如下所示(请参阅 vb.net 下面的代码段):

将cnnParser用作新的ConnectionStringParser(" Default")'我编写了拉出连接字符串元素的类。  :)

 ''方法#1在ReportDocument上显式设置DataSourceConnections
 对于每个dsc,作为Report.DataSourceConnections中的IConnectionInfo
     dsc.SetConnection(cnnParser.ServerName,cnnParser.DatabaseName,cnnParser.UserID,cnnParser.Password)
 下一个

 ''方法2为每个表设置ApplyLogonInfo
 昏暗的crConInfo作为新的ConnectionInfo()'Crystal Reports ConnectionInfo类

 crConInfo.ServerName = cnnParser.ServerName
 crConInfo.DatabaseName = cnnParser.DatabaseName
 如果cnnParser.UseIntegratedSecurity然后
     crConInfo.IntegratedSecurity = True
 其他
     crConInfo.IntegratedSecurity =假
     crConInfo.UserID = cnnParser.UserID
     crConInfo.Password = cnnParser.Password
 万一

 将crLogOnInfo设置为新TableLogOnInfo
 crLogOnInfo.ConnectionInfo = crConInfo
 对于每个tbl作为Report.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table
     tbl.ApplyLogOnInfo(crLogOnInfo)
 下一个


我发现上述代码在开发中运行良好。 但是,当我部署到生产环境时,Crystal Reports Viewer开始出现"登录数据库失败"错误。 然后,我进行了一次故障排除练习,以确定所引用的库版本等。一切都已签出。 我检查了运行代码以与生产数据库进行通信是否有所不同,然后在开发环境中一切正常。 我再次检查了连接字符串是否正确。

我最终解决了该问题,尽管我不知道为什么这样做。 因此,我希望有人能告诉我为什么这样做。

这是我添加的代码:

'GetData方法从对的调用返回ADO.Net数据集
 在数据库上存储过程。
 theReport.SetDataSource(GetData(reportParameters).Tables(0))


我想知道的是以下内容:

  1. 1。 为什么向ReportDocument提供数据集可以避免"登录数据库失败"错误?
  2. 2。 除了我已经尝试过的方法之外,还有没有其他方法可以使ReportDocument连接到数据库?
  3. 3。 如果我传递了一个模式填充的空数据集,报表是否可以正常工作(即,没有"登录数据库失败"错误)? 如果是这样,为什么?

供您参考,Crystal Reports DLL版本为13.0.3500.0。

感谢您的帮助/咨询!

j。

付费偷看设置
发送
1条回答
葫芦娃快救爷爷
1楼 · 2020-09-09 01:13.采纳回答

看起来应该可以,将其设置为数据集可以但限制了数据量。

启用CRLogger并查看日志中发生了什么,使用Google进行搜索, 我们的数据库日志记录组件。

您可能想使用ReplaceConnection()更新与生产的连接,可能是您的数据库客户端不同。

您是什么数据库和客户端 使用吗?

一周热门 更多>