2013-04-07 168 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();