【问题标题】:Crystal report getting error f'ailed to open the connection'水晶报表出现错误“无法打开连接”
【发布时间】:2016-02-12 15:48:36
【问题描述】:

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

【问题讨论】:

    标签: c# asp.net crystal-reports


    【解决方案1】:

    我并不是真正的水晶报告专家,但作为部分系统管理员,我知道一个 MS 更新 KB3102429,它导致我们的软件和水晶报告出现一些问题。也许这也是您的软件的问题?

    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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-11-01
      • 1970-01-01
      • 2017-06-12
      • 1970-01-01
      • 2012-12-06
      • 1970-01-01
      • 2020-04-22
      • 1970-01-01
      相关资源
      最近更新 更多