目前,我有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的代码,而无需再次键入/选择。
答案 0 :(得分:1)
基本上,您需要执行以下步骤:
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);
}
解决方案是从此article中提取的。