动态改变CrystalReport的连接我正在使用CrystalReportViewer和CrystalReportSource在我的应用程序中加载和显示.rpt文件。我的情况是这样的:假设有人在我的应用程序之外创建了一个水晶报表,并将其数据源设置为数据库A。然后我在我的应用程序中使用那个.rpt文件,但我需要把它绑定到另一个数据库(与原来的相同表结构方面的数据库)和列名,但使用具有不同用户名和密码的不同连接字符串)。我如何在C#中执行此操作?目前我使用以下方法加载报告:this.CrystalReportSource1.ReportDocument.Load(reportsSubfolder+report.ReportFileName);//就是在这里我需要更改报表的连接数据。我使用如下函数在运行时分配连接信息。privatevoidSetDBLogonForReport(CrystalDecisions.Shared.ConnectionInfoconnectionInfo,CrystalDecisions.CrystalReports.Engine.ReportDocumentreportDocument){CrystalDecisions.CrystalReports.Engine.Tables表=reportDocument.Database.Tables;foreach(CrystalDecisions.Engine.CrystalReport){CrystalDecisions.Shared.TableLogOnInfotableLogonInfo=table.LogOnInfo;tableLogonInfo.ConnectionInfo=connectionInfo;table.ApplyLogOnInfo(tableLogonInfo);您应该能够使用必要的信息简单地创建一个新的ConnectionInfo对象,并将它与报告文档一起传递给该函数。希望这可以帮助。VB代码:Dimreport=NewReportDocumentTry'openreportreport.Load(filename,OpenReportMethod.OpenReportByTempCopy)'为每个不同的数据库连接执行此操作,而不是为表report.SetDatabaseLogon("user","password","server","database")CatchexAsException'保留堆栈跟踪信息ThrowEndTry您可以使用以下代码在运行时将一些连接详细信息应用于报表。请在加载报告rpt文件后立即使用该方法,并将所需的连接详细信息传递给该方法,它将从传递的连接详细信息中获取报告数据。以上就是C#学习教程:动态改变水晶报表链接分享的全部内容。如果对大家有用,需要详细了解C#学习教程,希望大家多加关注——ReportDocumentsubRd;部分教派;报告对象ros;子报表对象sro;如果(reportParameters==null){thrownewArgumentNullException(“reportParameters”);Engine.TabletinreportParameters.Database.Tables){logOnInfo=t.LogOnInfo;logOnInfo.ReportName=reportParameters.Name;logOnInfo.ConnectionInfo.ServerName=serverName;logOnInfo.ConnectionInfo.DatabaseName=databaseName;logOnInfo.ConnectionInfo.UserID=用户名;logOnInfo.ConnectionInfo.Password=密码;logOnInfo.TableName=t.Name;t.ApplyLogOnInfo(logOnInfo);t.Location=t.Name;}}catch{抛出;}sects=reportParameters.ReportDefinition.Sections;ctinsects){ros=sect.ReportObjects;foreach(ReportObjectroinros){if(ro.Kind==ReportObjectKind.SubreportObject){sro=(SubreportObject)ro;subRd=sro.OpenSubreport(sro.SubreportName);try{foreach(CrystalDecisions.CrystalReports.Engine.TabletinsubRd.Database.Tables){logOnInfo=t.LogOnInfo;logOnInfo.ReportName=reportParameters.Name;logOnInfo.ConnectionInfo.ServerName=serverName;logOnInfo.ConnectionInfo.DatabaseName=databaseName;.ConnectionInfo.UserID=用户名;logOnInfo.ConnectionInfo.Password=密码;logOnInfo.TableName=t.Name;t.ApplyLogOnInfo(logOnInfo);}}catch{抛出;}}}}}本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
