ApplyLogOnInfo不起作用

2020-09-24 10:30发布

点击此处---> 群内免费提供SAP练习系统(在群公告中)加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)你好 我们正在尝试使用Appl...

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

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


你好

我们正在尝试使用ApplyLogOnInfo动态传递Sybase数据库登录凭据,以将数据加载/导出到.rpt文件。 但是,在调用该函数时似乎没有做任何事情。

我们正在将Microsoft Visual Basic 2015与SAP BusinessObjects Enterprise XI 4.0一起使用。 以下是部分代码:

导入CrystalDecisions.Reporting
 导入System.IO
 导入System.Data.Odbc
 导入System.Data
 导入System.Configuration
 导入CrystalDecisions.CrystalReports.Engine
 导入CrystalDecisions.Shared
 导入CrystalDecisions.ReportAppServer.DataDefModel

 模块Module1

     子Main()
         '获取命令行参数
         Dim CommandLineArgs作为System.Collections.ObjectModel.ReadOnlyCollection(String)= My.Application.CommandLineArgs

         将myConnectionInfo设置为新的CrystalDecisions.Shared.ConnectionInfo()
         与myConnectionInfo
             .ServerName = CommandLineArgs(5)
             .DatabaseName = CommandLineArgs(7)
             .UserID = CommandLineArgs(9)
             .Password = CommandLineArgs(11)
         结束于

         昏暗的cryRpt作为新的ReportDocument
         cryRpt.Load(CommandLineArgs(3))
         cryRpt.SetDatabaseLogon(myConnectionInfo.UserID,myConnectionInfo.Password,myConnectionInfo.ServerName,myConnectionInfo.DatabaseName)

         Dim crTables作为CrystalDecisions.CrystalReports.Engine.Tables = cryRpt.Database.Tables

         对于每个crTable,如crTables中的CrystalDecisions.CrystalReports.Engine.Table
             将crTableLogonInfo设为新的TableLogOnInfo()
             crTableLogonInfo = crTable.LogOnInfo
             crTableLogonInfo.ReportName = cryRpt.Name
             crTableLogonInfo.ConnectionInfo.AllowCustomConnection = True
             crTableLogonInfo.ConnectionInfo = myConnectionInfo
             crTableLogonInfo.TableName = crTable.Name
             MessageBox.Show(crTableLogonInfo.ConnectionInfo.ServerName)
             MessageBox.Show(crTableLogonInfo.ConnectionInfo.DatabaseName)
             MessageBox.Show(crTableLogonInfo.ConnectionInfo.UserID)
             MessageBox.Show(crTableLogonInfo.ConnectionInfo.Password)
             crTable.ApplyLogOnInfo(crTableLogonInfo)
             MessageBox.Show(crTable.LogOnInfo.ConnectionInfo.ServerName)
             MessageBox.Show(crTable.LogOnInfo.ConnectionInfo.DatabaseName)
             MessageBox.Show(crTable.LogOnInfo.ConnectionInfo.UserID)
             MessageBox.Show(crTable.LogOnInfo.ConnectionInfo.Password)
             如果不是crTable.TestConnectivity()然后
                 MessageBox.Show("无法应用登录")
             万一
         下一个

在故障排除期间添加了消息框,该消息框显示表的登录凭据未更新为提供的值。 而是显示了.rpt文件开发过程中使用的数据库的详细信息。

我们已经搜索了有关ApplyLogOnInfo函数的先前询问的问题,但没有找到任何解决方案。

非常感谢您的帮助!

P.S。 -如果没有提供足够的信息,请提前道歉。

4条回答
nice_wp
2020-09-24 11:00

嗨,克里斯,
您的消息框在applyLogonInfo之前和之后显示相同的信息,还是在它们之前和之后使用不同的值?

登录是否失败?

即使您的消息框显示了保存在报表中的connectioninfo,但是如果您成功使用此代码登录,是否还会显示旧数据库的数据还是来自新连接的数据?

我看不到任何明显的代码错误,但是您登录了两次,这是不必要的。

SetDatabaseLogon将登录到DB以及登录到每个单独的表。 两种方法都不是必需的。 SetDatabaseLogon更是一种简化登录的辅助方法。 仅使用两种方法之一。

首先注释掉" For Each ..."循环。 报表是否登录并显示正确的数据?

如果要使用TableLogonInfo,请使用SetDabaseLogon注释掉该行,看看是否可行。

有一个V14 .NET SDK。 32位程序集与BOE客户端安装一起安装(作为选项)。 64位程序集随BOE服务器安装一起安装(作为选项)。 如果您拥有BOE,则还可以从 https://下载运行时 support.sap.com/en/my-support/software-downloads.html
V14 SDK还包括BOE的运行时,因此它比V13安装的要大得多。 由于您正在使用ReportDocument对象模型,并且未连接到BOE,因此使用V14运行时没有任何好处。

一周热门 更多>