0

Crystal レポートの表示中にこのエラーが発生します。私は何をする必要がありますか。

SQL Server への接続を確立中に、ネットワーク関連またはインスタンス固有のエラーが発生しました。サーバーが見つからないか、アクセスできませんでした。インスタンス名が正しいこと、および SQL Server がリモート接続を許可するように構成されていることを確認してください。(プロバイダー: 名前付きパイプ プロバイダー、エラー: 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";        
}
4

1 に答える 1

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(); 
于 2013-04-07T15:51:15.860 に答える