0

此代码在安装了代码的服务器机器上成功运行,但是当我尝试从客户端机器打印报告时它不起作用

请帮我解决这个问题。

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);
4

2 回答 2

0

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

于 2013-01-02T12:02:16.773 回答
0

您提供的代码有答案:

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

数据库正在服务器中运行。它在服务器中工作。知道了?好的,在上面的代码中 localhost 代表服务器机器,当代码运行时是服务器。所以报告知道数据库在哪里退出。

当您在客户端机器上运行相同的代码时,本地主机代表客户端机器并报告抱怨没有数据库。

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

        //For Online Server
        //doc.SetDatabaseLogon("user_name", "password", "12.121.114.220", "ktem");
于 2013-01-02T12:28:52.273 回答