我通过以下任一代码在运行时将数据库连接到水晶报表,但它在回发中丢失了数据库连接(当我单击树视图或尝试导航到下一页时)这是我得到的错误:
System.Runtime.InteropServices。 COMException: 数据库登录失败。
ReportDocument cryRpt = new ReportDocument();
cryRpt.Load(path);
(((1)))
for (int i = 0; i < cryRpt.DataSourceConnections.Count; i++)
cryRpt.DataSourceConnections[i].SetConnection(ServerName, DatabaseName, UserID, Password);
for (int i = 0; i < cryRpt.Subreports.Count; i++)
for (int j = 0; j < cryRpt.Subreports[i].DataSourceConnections.Count; j++)
cryRpt.OpenSubreport(cryRpt.Subreports[i].Name).DataSourceConnections[j].SetConnection(ServerName, DatabaseName, UserID, Password);
cryRpt.OpenSubreport(cryRpt.Subreports[i].Name).DataSourceConnections[j].SetConnection(ServerName, DatabaseName, UserID, Password);
(((2)))
crConnectionInfo.ServerName = ServerName;
crConnectionInfo.DatabaseName = DatabaseName;
crConnectionInfo.UserID = UserID;
crConnectionInfo.Password = Password;
crDatabase = cryRpt.Database;
crTables = crDatabase.Tables;
for (int i = 0; i < crTables.Count; i++)
{
crTable = crTables[i];
crTableLogOnInfo = crTable.LogOnInfo;
crTableLogOnInfo.ConnectionInfo = crConnectionInfo;
crTable.ApplyLogOnInfo(crTableLogOnInfo);
//crTable.Location = crConnectionInfo.DatabaseName + ".dbo." + crTable.Location.Substring(crTable.Location.LastIndexOf(".") + 1)
}