0
我得到了使用ODBC連接實現的水晶報表。但根據我的要求,我改變了SQL連接。水晶報表出現錯誤'已打開連接'
private void generateReport(string path)
{
string ServerName = ConfigurationManager.AppSettings["Server"].ToString();
string DatabaseName = ConfigurationManager.AppSettings["DBName"].ToString();
string UserName = ConfigurationManager.AppSettings["UserName"].ToString();
string Password = ConfigurationManager.AppSettings["Password"].ToString();
CrystalReportViewer1.ParameterFieldInfo.Clear();
ReportDocument crystalReport = new ReportDocument();
crystalReport.Load(path);
var connectionInfo = new ConnectionInfo();
connectionInfo.ServerName = ServerName;
connectionInfo.DatabaseName = DatabaseName;
connectionInfo.UserID = UserName;
connectionInfo.Password = Password;
connectionInfo.IntegratedSecurity = false;
crystalReport.SetDatabaseLogon(UserName, Password, ServerName, DatabaseName);
Tables CrTables = crystalReport.Database.Tables;
TableLogOnInfo crtableLogoninfo = new TableLogOnInfo();
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = connectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
CrystalReportViewer1.LogOnInfo.Add(crtableLogoninfo);
}
foreach (ReportDocument report in crystalReport.Subreports)
{
report.SetDatabaseLogon(UserName, Password, ServerName, DatabaseName);
foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in report.Database.Tables)
{
crtableLogoninfo = CrTable.LogOnInfo;
crtableLogoninfo.ConnectionInfo = connectionInfo;
CrTable.ApplyLogOnInfo(crtableLogoninfo);
CrystalReportViewer1.LogOnInfo.Add(crtableLogoninfo);
}
}
DataTable DTpram = dbAccess.getDataTableBtQry("select ParamID,ControllerType,ParamName from MI_CrystalReport_Parameters where ReportID=" + ddlReport.SelectedValue);
for (int i = 0; i < DTpram.Rows.Count; i++)
{
try
{
string parm = DTpram.Rows[i]["ParamName"].ToString().ToLower();
string value = getControllerValue(DTpram.Rows[i]["ParamID"].ToString().ToLower(), DTpram.Rows[i]["ControllerType"].ToString().ToLower());
ParameterField parameter = new ParameterField();
ParameterDiscreteValue parameterValue = new ParameterDiscreteValue();
parameterValue.Value = value;
parameter.Name = parm;
parameter.CurrentValues.Add(parameterValue);
CrystalReportViewer1.ParameterFieldInfo.Add(parameter);
}
catch
{
}
}
CrystalReportViewer1.ReportSource = crystalReport;
CrystalReportViewer1.RefreshReport();
}
但是,當我檢查它得到像這樣的錯誤。 Print Screen
謝謝。我會檢查出來.. –