2011-06-02 102 views
-2
public class MyReportRenderer 
    { 

     private rs2005.ReportingService2005 rs; 
     private rs2005Execution.ReportExecutionService rsExec; 
     //string casenumberKey; 

     public void RenderTest() 
     { 
      string HistoryID = null; 
      string deviceInfo = null; 
      string encoding = String.Empty; 
      string mimeType = String.Empty; 
      string extension = String.Empty; 
      rs2005Execution.Warning[] warnings = null; 
      string[] streamIDs = null; 

      rs = new rs2005.ReportingService2005(); 
      rsExec = new rs2005Execution.ReportExecutionService(); 
      rs.Credentials = System.Net.CredentialCache.DefaultCredentials; 
      rsExec.Credentials = System.Net.CredentialCache.DefaultCredentials; 
      rs.Url = "http://216.40.232.82/ReportServer_DEVELOPMENT/ReportService2005.asmx"; 
      rsExec.Url = "http://216.40.232.82/ReportServer_DEVELOPMENT/ReportExecution2005.asmx"; 


      //// pass parameters 

      try 
      { 
       // Get if any parameters needed. 



       // Load the selected report. 

       rsExec.LoadReport("/LawDept/LawDeptTIC", HistoryID); 

       // Prepare report parameter. 

       // Set the parameters for the report needed. 

       rs2005Execution.ParameterValue[] parameters = new rs2005Execution.ParameterValue[3]; 
       parameters[0] = new rs2005Execution.ParameterValue(); 
       parameters[0].Name = "CaseNumberKey"; 
       parameters[0].Value = "000002"; 
       //parameters[1] = new rs2005Execution.ParameterValue(); 
       //parameters[1].Name = "ReportMonth"; 
       //parameters[1].Value = "6"; // June 
       //parameters[2] = new rs2005Execution.ParameterValue(); 
       //parameters[2].Name = "ReportYear"; 
       //parameters[2].Value = "2004"; 
       rsExec.SetExecutionParameters(parameters, "en-us"); 

       // get pdf of report 
       Byte[] results = rsExec.Render("PDF", deviceInfo, 
       out extension, out encoding, 
       out mimeType, out warnings, out streamIDs); 

       MailMessage message = new MailMessage("[email protected]", "[email protected]", "Hello", "This is a test"); 
       SmtpClient emailClient = new SmtpClient("localhost"); 
       message.Attachments.Add(new Attachment(new MemoryStream(results), String.Format("{0}_DocumentSavingsReport.pdf", "ReportName"))); 
       emailClient.Send(message); 
      } 

      catch (Exception ex) 
      { 
       MessageBox.Show(ex.Message); 

      } 
     } 
    } 

我會在我需要它執行時調用這個?如何撥打以下電話?

+0

-1「不是一個真正的問題」。不要發佈一個代碼塊(並期待一個奇蹟般的正確猜測),考慮發佈上下文*和一個完整的深思熟慮的問題*。它看起來像是在使用RS,所以有一個開始 - 但是當這個運行時有什麼要求/期望? – 2011-06-02 02:00:34

+0

@pst嗯,當我完成其餘部分的編寫時,它需要在Windows服務在表中找到記錄時運行,並且需要將CaseNumberKey作爲參數傳遞。現在讓我們說點擊button1的時候。在進入下一部分之前,我需要能夠測試它,但我不完全確定如何調用它。 – korrowan 2011-06-02 02:04:23

回答

7
(new MyReportRenderer()).RenderTest(); 
+1

感謝您的幫助,我得到了這個工作。我是新來的,很高興你幫助我,而不是像那些得到這個封閉大聲笑的傢伙那樣對待我! – korrowan 2011-06-02 02:28:43

1

如果你問如何調用該方法RenderTest的類MyReportRenderer,你需要實例化一個MyReportRenderer實例,然後調用從實例化對象方法:

namespace ReportProgram 
{ 
    class Program 
    { 
    static void Main(string [] args) 
    { 
     var rr = new MyReportRenderer(); 
     rr.RenderTest(); 
    } 
    } 
} 
0

我稱之爲「一個名爲MyReportRenderer的類」。如果你的意思是「調用方法」,我認爲你需要

var renderer = new MyrReportRenderer(); 
renderer.RenderTest();