C# 如何将Crystal reports连接到多个数据库

C# 如何将Crystal reports连接到多个数据库,c#,crystal-reports,C#,Crystal Reports,目前我有3台不同位置的服务器。每个数据库都有不同的数据库名,但表名相同。如何根据从下拉列表中选择的选项动态连接到数据库 我尝试使用setLogonInfo函数,但这只适用于1个数据库,没有任何问题。因为我提供了数据库名、服务器名、用户名和密码 logOnInfo.ConnectionInfo.ServerName = "ServerName"; logOnInfo.ConnectionInfo.DatabaseName = "DatabaseNam

目前我有3台不同位置的服务器。每个数据库都有不同的数据库名,但表名相同。如何根据从下拉列表中选择的选项动态连接到数据库

我尝试使用setLogonInfo函数,但这只适用于1个数据库,没有任何问题。因为我提供了数据库名、服务器名、用户名和密码

            logOnInfo.ConnectionInfo.ServerName = "ServerName";
            logOnInfo.ConnectionInfo.DatabaseName = "DatabaseName";
            logOnInfo.ConnectionInfo.UserID = "user";
            logOnInfo.ConnectionInfo.Password = "pass";

            TableLogOnInfos infos = new TableLogOnInfos();
            infos.Add(logOnInfo);
            CrystalReportViewer.LogOnInfo = infos;

我想要一个能够动态更改ServerName和DatabaseName的代码,而无需再次键入/选择。

基本上,您需要遵循以下步骤:

a加载报告文档

ReportDocument crReport = new ReportDocument();
crReport.Load("path and filename");
b创建报表连接信息对象

ConnectionInfo crConn = new ConnectionInfo();
crConn.ServerName = "my db server name";
crConn.DatabaseName = "my database name";
crConn.UserID = "db user name";
crConn.Password = "db password";
c将登录信息应用于每个报表表

Tables tblsReport = crReport.Database.Tables;
for(int i=0; i<tblsreport.count;i++)>
{
   Table tblReport = tblsReport[i];
   TableLogOnInfo tliTable = tblReport.LogOnInfo;
   tliTable.ConnectionInfo = crConn;
   tblReport.ApplyLogOnInfo(tliTable);
}

解决方案是从中提取的。

我不需要再提供2个db服务器名称和数据库名称?只需输入一个名字?