2016-09-01 7 views
0

Ich habe das folgende Szenario: eine einzelne RDL-Datei mit einer gespeicherten Prozedur als Datenquelle. Diese gespeicherte Prozedur akzeptiert zwei Parameter: @ProcedureName nvarchar(max) und @Parameters xml. Die Funktionalität der gespeicherten Prozedur besteht darin, eine andere gespeicherte Prozedur (höchstwahrscheinlich in einer anderen Datenbank) mit den angegebenen XML-Parametern aufzurufen. Im Wesentlichen wird jeder der gespeicherten Procs, die ausgeführt werden, sein eigenes Dataset zurückgeben.So implementieren Sie dynamische Datensätze in einem SSRS-Bericht

Wie würde ich eine Tablix/Matrix erstellen, die den Datensatz verbraucht, ohne die Spalten anzugeben, da die Spalten zur Laufzeit generiert werden müssen?

Antwort

0

Leider hat SSRS nicht "AutoGenerateColumns" -Stil-Funktionalität und löst eine Reihe von Dingen zur Entwurfszeit. Also die kurze Antwort ist, dass Sie nicht können.

Der Designer überprüft Feldreferenzen beim Speichern und speichert nicht mit einem Verweis auf ein Feld, das nicht in der Feldliste eines Datasets enthalten ist. Wenn ein Feld nach der Generierung der Berichtsdefinition nicht mehr existiert, wird es im Bericht als leerer statischer Wert angezeigt. Ausdrücke werden dies auch tun, auch wenn das Feld in einem unbewerteten Teil ist. Also, wenn Feld B entfernt wird, würde dieser Ausdruck noch betroffen sein:

=IIF(1=1,Fields!A.Value,Fields!B.Value)

was bedeutet, dass Sie nicht bedingte Gruppierung Ausdrücke als Abhilfe verwenden können, auch wenn Sie eine vollständige Liste der Spalten hatten das könnte zurück.

+0

Ich erzeugte schließlich das XML-Markup für die RDL-Datei dynamisch mit begleitender XSLT-Transformation für die verschiedenen Datensätze. Basierend auf dem zurückgegebenen Dataset konnte ich die relevante Tablix-Struktur erstellen. Allerdings ist es etwas mühsam, die XML-Formatierung zu korrigieren, da ich vorher die RDL-Datei erstellen muss, um zu sehen, wie das Markup aussieht (Gruppierung, spezielle Ausdrücke usw.). –

Verwandte Themen