点击此处---> 群内免费提供SAP练习系统(在群公告中)
加入QQ群:457200227(SAP S4 HANA技术交流) 群内免费提供SAP练习系统(在群公告中)
我们正在将Visual Studio CRRuntime_32bit_13_0_22的Crystal Reports与Visual Studio 2017和DB2 Windows数据库一起使用。
我们需要在运行时更改数据库连接(服务器,数据库,用户密码)。 我们的应用程序具有示例报告,我们将与我们的应用程序一起分发给客户。
在尝试预览报告时(如果使用WPF查看器,则有任何区别),将引发异常,并显示以下消息:
无法连接:错误的登录参数。
table.ApplyLogOnInfo(table.LogOnInfo);
发生异常在加载报告时,在预览之前,将执行以下代码来更改连接信息。 我基于以下示例: https://wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports+for+.NET+SDK+Samples?original_fqdn=wiki.sdn .sap.com#CrystalReportsfor.NETSDKS示例数据库
我没有使用子报表,因此没有遍历子报表列表。
这是我的代码:
私有void ChangeConnectionInfo(ReportDocument boReportDocument) { boReportDocument.SetDatabaseLogon(databaseUser,databasePassword,databaseServer,databaseName); TableLogOnInfo logOnInfo; foreach(boReportDocument.Database.Tables中的CrystalDecisions.CrystalReports.Engine.Table表) { logOnInfo = table.LogOnInfo; logOnInfo.ReportName = boReportDocument.Name; logOnInfo.ConnectionInfo.ServerName = databaseServer; logOnInfo.ConnectionInfo.DatabaseName = databaseName; logOnInfo.ConnectionInfo.UserID = databaseUser; logOnInfo.ConnectionInfo.Password = databasePassword; logOnInfo.TableName = table.Name; 如果(schemaName.IsNotNullOrEmpty()) table.Location = $" {schemaName}。{table.Name}"; 其他 table.Location = table.Name; table.ApplyLogOnInfo(table.LogOnInfo); } }
我在调试时注意到的一件奇怪的事是,即使table.count为6,并且表可以为null,但我可以在调试器中查看整个列表。 我不知道这是问题的征兆还是调试器异常。
任何帮助将不胜感激。
埃里克
使用引擎仅用于更改服务器,前提是数据库未更改。
"下载WIKI"页面是我编写的用于使用ReplaceConnection()设置登录信息的应用程序。 看看是否适合您。
https: //wiki.scn.sap.com/wiki/display/BOBJ/Crystal+Reports%2C+Developer+for+Visual+Studio+Downloads
它是Parameter测试应用,位于页面的中间。
问题可能是您需要将数据库名称转换为String()。
Don
我是否需要对单个表的连接信息做任何事情,还是只对报表数据库调用一次ReplaceConnection?
使它
如果我遍历Tables集合并使用Table.SetTableLocation设置登录信息,则会收到消息异常
文件列表中的错误BillTemplate_MODL 15980_3776_ {0164F666-AD2D-4195-946C-08D5FDA64D7B} .rpt:
无法连接:错误的登录参数。
我只能找到SetTableLocation或SetTableLocationEx方法。
我当前的代码如下。 表代码在注释"//设置新表位置"之后。
我显然错过了一些东西。
谢谢
埃里克。
在不设置登录信息的情况下预览报告,它会提示您缺少信息。
如果不起作用,请手动更新报告,然后 再次测试,然后将显示的内容与您设置的内容进行比较。
不要在代码中验证,不是必需的。
如何连接ODBC或OLE DB?
服务器名称属性应该是DSN名称或数据库服务器名称。
唐
谢谢。 我已将更新后的程序发送给客户端,它似乎正在运行。
这是OLEDB。
我将尝试其他项目,看看结果如何。
谢谢您的帮助。
埃里克。
一周热门 更多>