2013-04-07 169 views
0

我在顯示水晶報告時出現此錯誤。 我需要做什麼。如何顯示Crystal Report?

與SQL Server建立連接時發生網絡相關或實例特定的錯誤。服務器未找到或無法訪問。驗證實例名稱是否正確,並將SQL Server配置爲允許遠程連接。 (provider:命名管道提供程序,error:40 - 無法打開到SQL Server的連接)

代碼,我現在用的就是如下:

protected void Page_Load(object sender, EventArgs e) 
{   
    SqlConnection con = new SqlConnection("Data Source=./SQLEXPRESS;AttachDbFilename=~/App_Data/Database.mdf;Integrated Security=True;User Instance=True");   
    DataSet1 ds = new DataSet1(); 
    SqlDataAdapter da = new SqlDataAdapter("SELECT  ID, Name, Dept, Salary FROM   dbo.Table2", con); 
    da.Fill(ds.View2); 
    ReportClass myReportObject = new ReportClass(); 
    myReportObject.ResourceName = "CrystalReport1.rpt";   
} 
+0

'DataSource'似乎是不正確的。 – 2013-04-07 07:43:34

+0

這不是一個水晶報表錯誤,它是SQL Server錯誤。檢查您的連接字符串和數據庫文件 – Stasel 2013-04-07 07:46:18

+0

當我使用 SqlConnection con = new SqlConnection(ConfigurationManager.ConnectionStrings [「ConnectionString」]。ConnectionString); 它說:數據庫登錄失敗。 我不想使用用戶名n密碼。我該怎麼辦? – 2013-04-07 07:49:02

回答

0

我覺得你的Crystal報表您嘗試顯示已在另一個連接字符串下創建另一個服務器名稱。將服務器名稱和數據庫名稱分別傳遞給報告。該代碼將有所幫助。

 ReportDocument cryRpt = new ReportDocument(); 
     TableLogOnInfos crtableLogoninfos = new TableLogOnInfos(); 
     TableLogOnInfo crtableLogoninfo = new TableLogOnInfo(); 
     ConnectionInfo crConnectionInfo = new ConnectionInfo(); 
     Tables CrTables ; 

     cryRpt.Load("PUT CRYSTAL REPORT PATH HERE\CrystalReport1.rpt"); 

     crConnectionInfo.ServerName = "YOUR SERVER NAME"; 
     crConnectionInfo.DatabaseName = "YOUR DATABASE NAME"; 

     // if sql server authentication mood 

     crConnectionInfo.UserID = "YOUR DATABASE USERNAME"; 
     crConnectionInfo.Password = "YOUR DATABASE PASSWORD"; 

     CrTables = cryRpt.Database.Tables ; 
     foreach (CrystalDecisions.CrystalReports.Engine.Table CrTable in CrTables) 
     { 
      crtableLogoninfo = CrTable.LogOnInfo; 
      crtableLogoninfo.ConnectionInfo = crConnectionInfo; 
      CrTable.ApplyLogOnInfo(crtableLogoninfo); 
     } 

     crystalReportViewer1.ReportSource = cryRpt; 
     crystalReportViewer1.Refresh();