此代码在已安装代码的服务器上成功运行,但是当我尝试从客户端计算机打印报告时,它无法正常工作
请帮我解决这个问题。
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);
答案 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");