SSRS i C# Programowanie Reporting Services cz.1 – wprowadzenie i Web Service ReportExecution2005

5-Wrz-2013

Programowanie pod Reporting Services można wykonać na co najmniej 2 sposoby:

  • Wykorzystując WebService i w ten sposób możesz na Reporting Services zrobić praktycznie wszystko np. uruchomić raport lub zarządzać raportami
  • Wykorzystując kontrolki służące do uruchomienia i zaprezentowania raportu.
  • Wykorzystując pisane ręcznie adresy URL wskazujące na Report Server, które poprzez QueryString określają jaki raport ma być uruchomiony (metoda GET)
  • Wykorzystując nawet ręcznie tworzone formularze przesyłając do Reporting Services wartości w parametrach metodą POST

Skupmy się na razie na Web Service. Jeśli mowa o SQL 2008 i trybie native dla Reporting Services, to mamy 2 Web Service:

  • ReportExecution2005 – do uruchamiania raportów
  • ReportService2005 – do zarządzania raportami

Załóżmy, że masz do napisania aplikację, która ma wyciągnąć z serwera dany raport w postaci Excel. W tym przypadku należy skorzystać z Web Service ReportExecution2005.

Po pierwsze dodaj w swoim projekcie referencję do tego Web Service:

  • Na projekcie kliknij prawym przyciskiem myszy i wybierz Add Service Reference
  • Kliknij Advanced
  • Kliknij Add Web Reference
  • Podaj adres URL: http://localhost/ReportServer/ReportExecution2005.asmx (localhost zamień u siebie na nazwę serwera, na którym działa Reporting Services)
  • Zmień nazwę (u mnie RS2005) i kliknij Add Reference

Dodawanie referencji do Web Service

Od tej pory do zdanych usług Reporting Services możesz sięgać przy pomocy lokalnej klasy proxy o nazwie RS2005.

Pora więc na stworzenie programu. Umieść na formularzu kontrolkę buton i oprogramuj kliknięcie tego przycisku:

protected void Button1_Click(object sender, EventArgs e)
{
   RS2005.ReportExecutionService rs = new RS2005.ReportExecutionService();
   rs.Credentials = System.Net.CredentialCache.DefaultCredentials;
   byte[] result = null;
   //Left all spaces ors slashes
   string reportPath = "/TestReportAW/Report1";
   string format = "EXCEL";
   string historyid=null;
   string encoding;
   string mimetype;
   string extension;
   RS2005.Warning[] warning = null;
   string[] streamIDs = null;
   RS2005.ExecutionInfo execInfo = new RS2005.ExecutionInfo();
   RS2005.ExecutionHeader execHeader = new RS2005.ExecutionHeader();
   rs.ExecutionHeaderValue = execHeader;
   execInfo = rs.LoadReport(reportPath, historyid);
   String sessionId = rs.ExecutionHeaderValue.ExecutionID;
   result = rs.Render(format, null, out extension, out encoding,  
                   out mimetype, out warning, out streamIDs);
   System.IO.File.WriteAllBytes(@"c:\temp\report.xls", result);
}

Poczytaj więcej: http://support.microsoft.com/kb/875447

 

Dodaj komentarz:

Autor: Rafał Kraik