水晶报告收到错误f' ailed打开连接'

时间:2016-02-12 06:40:27

标签: c# asp.net crystal-reports

我使用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

1 个答案:

答案 0 :(得分:0)

我不是关于水晶报告的专家,但作为部分系统管理员我知道MS更新KB3102429,这导致我们的软件和水晶reporst的一些问题。也许这也是你软件的问题?

http://answers.microsoft.com/en-us/windows/forum/windows_7-windows_programs/windows-update-kb3102429-does-not-play-well-with/d4ac7c27-da72-4842-b44f-370128cd0993