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”.
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!