2013-01-02 116 views
0

此代碼是成功的作品在那裏被安裝在代碼服務器的機器上,但是當我從客戶機試圖打印報告其行不通我想客戶端機器上打印水晶報表,在C#

請幫我解決這個問題。

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

是否有任何錯誤?請說明問題。 – jAC

+0

報告在服務器和客戶端機器上都以兩種方式加載,即 。 問題是當我試圖打印或導出水晶報告, 它在服務器上工作,但沒有在客戶端機器上打印,並沒有顯示任何錯誤 – dhiraj

回答

0

在客戶端加載crptpath時檢查路徑,如果路徑正確驗證服務器允許訪問rpt。

+0

報告以任何方式顯示 – dhiraj

+0

只有打印不會工作,當我點擊來自客戶機 – dhiraj

0

你給出的代碼了答案:

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

該數據庫在服務器上運行。它在服務器中工作。得到它了? OK,在上面的代碼中localhost代表運行代碼時的服務器機器是服務器。因此,請報告數據庫在哪裏退出。

當您在客戶端計算機上運行相同的代碼時,localhost代表客戶端計算機並且報告抱怨沒有數據庫。

用服務器IP地址替換本地主機。 [摘自您評論的代碼片段]

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

沒有那不是我的問題。報告是由該代碼使用服務器IP – dhiraj

+0

生成的報告生成在任何情況下,這不是一個問題。 但無法打印,當我點擊打印選項中的水晶報告 從客戶端機器。 並打印當我點擊從服務器機器。 這就是實際的問題 – dhiraj

相關問題