我想在客户端机器上打印水晶报告,在c#中

时间:2013-01-02 11:29:37

标签: c# printing crystal-reports report

此代码在已安装代码的服务器上成功运行,但是当我尝试从客户端计算机打印报告时,它无法正常工作

请帮我解决这个问题。

CrystalDecisions.CrystalReports.Engine.ReportDocument doc = new CrystalDecisions.CrystalReports.Engine.ReportDocument();
            string crptpath;
            crptpath = Server.MapPath("rpt_Water_FO_Gas_Consumption.rpt");
            doc.Load(crptpath);

            //For Local Server
            doc.SetDatabaseLogon("user_name", "password", "localhost", "ktem");

            //For Online Server
            //doc.SetDatabaseLogon("user_name", "password", "ip_address", "ktem");

            da = new SqlDataAdapter(cmd);
            dt = dbcon.filldataset(cmd);

            doc.Database.Tables[0].SetDataSource(dt.Tables[0]);
            CrystalReportViewer1.ReportSource = doc;

            //For Print Report
            CrystalReportViewer1.PrintMode.Equals(true);

2 个答案:

答案 0 :(得分:0)

在客户端加载crptpath时检查路径,如果路径正确,请验证服务器是否允许访问rpt。

答案 1 :(得分:0)

您提供的代码有答案:

     //For Local Server
        doc.SetDatabaseLogon("user_name", "password", "localhost", "ktem");

数据库正在服务器中运行。它适用于服务器。得到它了?好的,在上面的代码中localhost表示代码运行时的服务器机器是服务器。因此,报告知道数据库退出的位置。

当您在客户端计算机上运行相同的代码时,localhost代表客户端计算机并且报告抱怨没有数据库。

用服务器IP地址替换本地主机。 [取自您评论的代码]

        //For Online Server
        //doc.SetDatabaseLogon("user_name", "password", "12.121.114.220", "ktem");