Reporting Services RS.EXE mit Parametern nutzen

Vor ein paar Tagen habe ich hier gepostet wie Ihr mit dem Tool RS.exe (dem Reporting Services Skript Tool) einen Report bereitstellen könnt.

Dazu kamen nun ein paar Fragen rein. Eine Frage wiederholte sich und zwar: Wie Parameter an den Report übergeben werden können?

Das ist natürlich möglich, dazu müssen wir nur das Skript ein wenig erweitern für. Dann könnt Ihr das gleich zu Ostern ausprobieren! :-)

Zu erst aber brauchen wir einen Report mit einem Parameter. Dazu nehmen wir mal nichts komplexen, sondern diesen schönen Report. Der hat keinerlei Quellen etc., sondern nur einen Parameter mit dem schönen Namen "DemoParameter".

image 

Kommen wir zum Inhalt unseres "render.rss" Skripts.

Public Sub Main()
  Dim fileName as String = "C:\Users\Administrator\Desktop\demo.png"
  Dim reportPath as String = "/Vertrieb/ParameterDemo"
  Dim results() as Byte

  Dim parameters(0) As ParameterValue

  parameters(0) = New ParameterValue()
  parameters(0).Name = "DemoParameter"
  parameters(0).Value = myText

  rs.Credentials = System.Net.CredentialCache.DefaultCredentials

  rs.LoadReport(reportPath, Nothing)
  rs.SetExecutionParameters(parameters,"en-us")
  results = rs.Render("IMAGE",  Nothing, Nothing, Nothing, Nothing,  Nothing, Nothing)
  Dim stream  As FileStream = File.OpenWrite(fileName)
  stream.Write(results, 0, results.Length)
  stream.Close()
End Sub

Hier sehen wir auch die Erweiterungen für die Arbeit mit Parametern. Wir nutzen ein Array vom Typ ParameterValue und übergeben dieses mittels "SetExecutionParameters()" an den Report. Nur kommt unser Parameter nun von außen in das Skript?

Dazu hier unsere Kommandozeile:

rs.exe -i render.rss -s http://localhost/ReportServer -e Exec2005 -v myText="Hallo SQL Server Community."

Mit dem Parameter "-v" legen wir eine globale Variable im Skript an, welche wir nutzen können. Siehe oben im Skript. Das war es schon!

Frohe Ostern!