Nachdem wir bereits einen Artikel über die Übergab von URL-Parametern an Berichte des SSRS geschrieben haben, stellt sich doch die Frage, wie man eigentlich einen Parameter via URL übergibt, der mehrere Werte annimmt.
Denn tatsächlich ist das gar nicht so trivial, wenn man es richtig machen will. Deshalb erkläre ich dir hier, wie man über die URL einen Parameter mit mehreren Werten übergeben kann.
Als Beispiel nehmen wir wieder denselben Bericht, also die Bestellübersicht im Matrix42 Service Katalog. Falls du übrigens den vorherigen Artikel nicht gelesen hast, solltest du das jetzt nachholen 😉
Ausgangssituation
Frühen wir uns erst mal die URL Voraugen, die wir im letzten Beitrag erstellt hatten. Bei mir sah diese wie folgt aus:
http://srvwsm001:81/ReportServer/Pages/ReportViewer.aspx?/M42/DE/Service+Catalog/bestellübersicht&UserFragmentID=bfecb19e-cc09-e511-d380-0050562f9516&CostCenter=f4a41c4c-4029-e511-80ee-0050562f9516&MONTH=01&YEAR=2021&rs:Command=Render
Code-Sprache: JavaScript (javascript)
Ziel
Jetzt nehmen wir mal an, ich möchte 2 oder mehrere Kostenstellen in der URL mitgeben. Um das zu bewerkstelligen, muss ich mir einen neuen Parameter im Berichtsgenerator anlegen und diesen zur Vorbelegung des Parameters CostCenter nutzen.
Neuen Parameter hinzufügen
Mache hierzu einen Rechtsklick auf den Ordner “Parameter” → “Add Parameter”
Den Namen darfst du dir selbst ausdenken, wichtig ist, dass Null werte zugelassen sind und der Parameter unsichtbar ist, da er nur für unsere URL ist und ihn ja keiner sehen soll.
Da wir diesen als Standardwert für “CostCenter” nehmen wollen, muss der Parameter vor dem Parameter “CostCenter” sein:
Vorbelegung einstellen
Nun kommen wir zur Magic, wie manche Leute aus dem Marketing von Matrix42 sagen würden 😉
Wir müssen den Parameter CostCenter nun so einstellen, dass er anhand der kommaseparierten Werte, die wir später in ReportParameter1 übergeben, vorbelegt wird.
Hierzu ein Rechtsklick auf CostCenter → ParameterProperties und dann in den Reiter DefaultValues wechseln.
Mit dieser Funktion greifen wir nun die Werte von unserem verstecktem ReportParameter1 ab und fügen sie mithilfe des Split Befehls kompatibel in den Parameter CostCenter ein.
=Split(Parameters!ReportParameter1.Value,",")
Code-Sprache: JavaScript (javascript)
Multi URL-Parameter testen
Abschließend müssen wir nur noch den Parameter mit kommaseparierten Werten füllen (und den ursprünglich nicht mehr). Bei mir sieht die URL mit 3 Kostenstellen dann so aus:
http://srvwsm001:81/ReportServer/Pages/ReportViewer.aspx?/M42/DE/Service+Catalog/bestellübersicht&UserFragmentID=bfecb19e-cc09-e511-d380-0050562f9516&ReportParameter1=f4a41c4c-4029-e511-80ee-0050562f9516,f4a41c4c-4029-e511-80ee-0050562f9516,1921bfaa-cd6c-e511-4081-0050562f9516&MONTH=01&YEAR=2021&rs:Command=Render
Hier das Ergebnis: