Reporting Services Tabelle soll beim Ausblenden von Spalten nicht „schrumpfen“

Wenn man viel mit Reporting Services arbeitet kann es ab und zu mal passieren, dass man Berichte erstellen soll, bei denen dynamisch, je nach Kontext Spalten ein- oder ausgeblendet werden sollen. Das Problem hierbei ist aber, dass beim Ausblenden einer Spalte die gesamte Breite der Tabelle auch angepasst wird. Hat man beispielsweise drei Spalten die jeweils 5 cm breit sind, so ist die gesamte Tabelle 15 cm breit. Wenn man nun eine dieser Spalten ausblendet, so wird die Breite der ausgeblendeten Spalte von der Gesamtbreite der Tabelle abgezogen, so dass die Tabelle nur noch 10 cm breit ist. Je nach Berichtsdesign sieht das natürlich nicht so gut aus. In diesem Blog-Artikel stelle ich dar, wie man (mit einem kleinen Trick) verhindern kann, dass die Breite einer Tabelle unter einen bestimmten Wert schrumpft.

Als Basis für den Bericht nehme ich die AdventureWorks-Datenbank und schreibe eine Abfrage, die eine beliebige Datenmenge zurückliefert. Welche das ist, ist völlig egal, da es uns in diesem Beispiel nur um den Bericht geht. Ich habe mich für die folgenden Abfrage entschieden:

SELECT
    p.Name
  , p.SafetyStockLevel
FROM
    Production.Product AS p;

Diese Abfrage liefert uns sogar nur zwei Spalten zurück und wir werden eine im Bericht doppelt verwenden, aber wie gesagt, die eigentliche Abfrage ist völlig egal. Nun baue ich zunächst einmal den Bericht „normal“ auf, d.h. so wie man das üblicherweise machen würde. Hierzu nutze ich eine Tabelle in die ich die beiden Felder ziehe. In das dritte Feld ziehe ich zusätzlich die zweite Spalte (SafetyStockLevel) noch einmal. Wir bekommen das folgende Ergebnis:

Tabelle1

Zusätzlich füge ich einen Booleschen Parameter zum Bericht hinzu mit dem man eine der beiden Spalten ausblenden kann:

Tabelle2

Auf Basis dieses Parameters schreibe ich einen Ausdruck im Bericht, der die zweite Spalte ausblendet:

Tabelle3

Nun haben wir die Grundlage für den Bericht und können diese einmal ausprobieren. Mit eingeblendeter Spalte sieht der Bericht so aus

Tabelle4

Mit ausgeblendeter Spalte sieht es so aus

Tabelle5

Man kann in den Screenshots sehen, dass das hier der unerwünschte Effekt auftritt, d.h. die Tabelle wird beim Ausblenden der Spalte 2 kleiner. Die Lösung die ich mir für dieses Problem überlegt habe ist, dass oberhalb der Überschrift eine weitere Zeile eingefügt wird.

Tabelle6

In diese Zeile wird einfach ein Rechteck gelegt, dem man die Minimalbreite des Rechtecks gibt, in unserem Beispiel also 15 cm. Damit man das Rechteck gut sehen kann habe ich es eingefärbt, in einem echten Projekt würde man natürlich das Rechteck so einfärben, dass es nicht sichtbar ist.

Tabelle7

Durch dieses Rechteck wird verhindert, dass die Tabelle unter die durch das Rechteck festgelegte Größe schrumpfen kann. Im Beispiel sieht der Bericht mit drei Spalten so aus:

Tabelle8

Schaltet man die zweite Spalte aus, dann sieht der Bericht so aus:

Tabelle9

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

%d Bloggern gefällt das: