Web Report Viewer: Gezielt Berichte über eine URL inkl. Berichtsparametern aufrufen

Einleitung

Berichte werden im Web Report Viewer in aller Regel über die Entwicklung der Web Anwendung im Backend auf dem Web Server erstellt und im Browser des Clients angezeigt. Dabei ist es auch technisch möglich, die im Bericht enthaltenen Berichtsparameter mit anderen bzw. alternativen Werten vorzubelegen, als den im Bericht als Standard im Designer vorbelegten. Hierzu ist jedoch bislang immer eine Anpassung der Web Anwendung über die Entwicklung notwendig gewesen. Die generelle Vorgehensweise hierzu beschreibt der Artikel Berichtsparameter zur Laufzeit für den Druck/Export modifizieren/ändern.

Doch der Web Report Viewer unterstützt auch, dass man die Berichtsparameter für einen Bericht ganz gezielt über eine URL aufrufen kann - und das ganz ohne Anpassung in der Web Anwendung durch die Entwicklung. Dadurch ergeben sich ganz andere Anwendungsbereiche, wenn der Anwender ganz gezielt selbstständig Berichte und deren Parameter aufrufen und steuern kann - client-seitig. So kann dann bspw. eine URL für einen Bericht erstellt werden, die dann via eMail oder einer Teilen-Funktion in der Web Anwendung mit einem Kollegen geteilt werden kann - ohne dass dieser sich den Bericht selbst raussuchen muss und die Parameter selbst nochmal bestimmen müsste.

Der Artikel Berichtsparameter und deren Verwendung geht noch einmal gezielt auf Berichtsparameter im Allgemeinen ein.

Hinweis: Die Unterstützung für Berichtsparameter in der URL im Web Report Viewer ist ab Version 27.003 von List & Label bzw. Report Server enthalten.

Ausgangslage

Unser Bericht zeigt den Lagerbestand für verschiedene Produkte je Kategorie an und hat dafür insgesamt drei Berichtsparameter zur Steuerung der Werte. Dadurch ergeben sich im Designer die drei Berichtsparameter @Category, @MinStock und @ShowPageNumbers:

Die Parameter werden im Web Report Viewer direkt durch die Werte im Designer vorbelegt und die Ausgabe sieht standardmäßig dann wie folgt aus:

Anpassung der Parameter über die URL

Damit nun ein Bericht über eine URL im Web Report Viewer aufgerufen werden kann, muss diese dafür einen ganz bestimmten Aufbau haben. Welche Syntax dabei eingehalten werden muss und wie sich die URL zusammensetzt, sehen Sie nachfolgend anhand jeweils eines Beispiels für List & Label bzw. den Report Server.

List & Label

Ausgehend von der o.g. standardmäßigen Ausgangslage sollen nun aber ausschließlich die Produktkategorien “Condiments” und “Seafood” relevant sein, die mehr als 50 Stück im Lager aufweisen können. Die URL würde dann wie folgt aussehen, basierend auf dem mitgelieferten MVC Web Reporting Sample, das lokal in Visual Studio ausgeführt wird:

http://localhost:11278/Sample/Viewer?reportRepositoryID=repository://{86786548-7D45-4C58-A405-494BD19B2A63}&$Category=Condiments;Seafood&$MinStock=50&$ShowPageNumbers=False

Zusammensetzung der URL

Der allgemeine Aufbau setzt sich dabei wie folgt zusammen:

https://<MY_WEBAPPLICATION_PATH>/<MY_WEBREPORTVIEWER_PATH>/Viewer?reportRepositoryID=repository://{<MY_REPOSITORY_ID>}&$<MY_PARAMETER_NAME_1>=<MY_PARAMETER_VALUE_1>&$<MY_PARAMETER_NAME_n>=<MY_PARAMETER_VALUE_n>

  • MY_WEBAPPLICATION_PATH: Das ist der Pfad, unter dem die Web Anwendung zu erreichen ist.

  • MY_WEBREPORTVIEWER_PATH: Das ist der Pfad des Controllers innerhalb der Web Anwendung, unter dem der Web Report Viewer zu finden ist.

  • MY_REPOSITORY_ID: Die Repository-ID des gewünschten Berichts.

  • MY_PARAMETER_NAME_n und MY_PARAMETER_VALUE_n: Der Name des anzusteuernden Berichtsparameters und dessen jeweiliger Wert.

Tipp: Mit Hilfe der DevTools im Browser über F12 können Sie sich bspw. über Sources den Pfad für den Web Report Viewer und den angezeigten Bericht anzeigen lassen:
grafik

Report Server

Das gleiche wie für List & Label gilt auch für die out-of-the-box Reporting Lösung combit Report Server. Auch hier lassen sich URLs zusammenstellen, die dann gezielt im Browser geöffnet werden können, um einen Bericht in dessen Vorschau anzuzeigen - auf Wunsch auch mit gezielten Berichtsparametern. Jedoch wird im Report Server nicht direkt der dort enthaltene Web Report Viewer in der URL angesteuert, wie im Beispiel von List & Label, sondern der Report Server verwaltet Berichte im Rahmen von Berichtsvorlagen (Container für Bericht, Datenquelle Berichtselemente, Berechtigungen etc.) eigenständig.

Sollen hier ebenfalls nur die Produktkategorien “Condiments” und “Seafood” gezeigt werden, bei denen sich mehr als 50 Stück im Lager befinden, dann würde die URL wie folgt aussehen:

http://combitReportServer/Report/Preview/86786548-7D45-4C58-A405-494BD19B2A63?$Category=Condiments;Seafood&$MinStock=50&$ShowPageNumbers=False

Zusammensetzung der URL

Beim Report Server ergibt sich wie o.g. ein minimal anderer Aufbau der URL:

https://<MY_REPORTSERVER_PATH>/Report/Preview/<MY_REPORTTEMPLATE>?$<MY_PARAMETER_NAME_1>=<MY_PARAMETER_VALUE_1>&$<MY_PARAMETER_NAME_n>=<MY_PARAMETER_VALUE_n>

  • MY_REPORTSERVER_PATH: Das ist der Pfad, unter dem der Report Server zu erreichen ist.

  • MY_REPORTTEMPLATE: Das ist die ID der Berichtsvorlage und wird im Browser in der Adressleiste angezeigt, wenn Sie bspw. die Eigenschaften der Berichtsvorlage im Report Server öffnen.

  • MY_PARAMETER_NAME_n und MY_PARAMETER_VALUE_n: Der Name des anzusteuernden Berichtsparameters und dessen jeweiliger Wert.

Tipp: Soll der Bericht nicht in der Vorschau angezeigt, sondern direkt exportiert werden, so muss lediglich in der URL für den Bericht aus dem Wert /Report/Preview/ der Wert /Report/Export/ gemacht werden. Beispiel:
http://combitReportServer/Report/Export/86786548-7D45-4C58-A405-494BD19B2A63?$Category=Condiments;Seafood&$MinStock=50&$ShowPageNumbers=False

Im Blog-Artikel Report Server 27: Neue Funktionen und Verbesserungen finden sich noch weitere Informationen dazu.

Besonderheiten in der Zusammensetzung der URL

  • Der Name eines Berichtsparameters im Designer beginnt immer mit einem @-Zeichen wie bspw. @MinStock. Doch innerhalb der URL muss das @-Zeichen durch ein $-Zeichen ersetzt werden, sodass in der URL der Berichtsparameter $MinStock heißt.

  • Name und Werte werden immer über das =-Zeichen voneinander getrennt - bspw. $MinStock=50.

  • Bei einer Auswahlbox muss der Wert des Schlüssel-Wert-Paares mit dem tatsächlich dargestellten Wert aus der Auswahlbox übereinstimmen. Mehrere Werte können dabei mit einem Semikolon “;” voneinander getrennt werden (Mehrfachselektion) - bspw. $Categories=Condiments;Seafood.

  • Datums- und Zeitangaben müssen im ISO-Format übergeben werden. Eine Ausnahme gilt hierbei für Auswahlboxen/Dropdown-Listen - diese müssen mit dem entsprechend angezeigten Text angegeben werden.

  • Boolean-Werte werden mit True oder False als Wert angegeben.