Dokumentenstruktur für Reports erstellen

Bei meiner letzten Session auf dem SQL Saturday in St. Augustin habe ich festgestellt, dass die Möglichkeiten eine Dokumentenstruktur für Reports zu verwenden bei den Zuhöreren noch unbekannt waren. Deshalb hier mal ein Überblick.

Was ist das Ziel?

In meiner Session hatte ich für mehrere Vertragspartner die Auflistung ihrer einzelnen Verträge gezeigt. Im linken Bereich gab es eine Baumstruktur, über die man per Mausklick zu den einzelnen Verträgen gelangen konnte. Das ganze passiert ohne großen Programmieraufwand einfach in den Reporting Services. Hier ist mal ein Beispiel, wie so etwas aussehen könnte.

Links gibt es also einen Baum mit Beschriftungen und ein Mausklick führt einen auf der rechten Seite auf die richtige Seite des Reports. Zu einigen Punkten gibt es auch noch Unterpunkte, die sich aufklappen lassen. Im Visual Studio werden auch noch die Linien zum Baum angezeigt, im Browser sieht es dann etwas anders aus.

Der oberste Eintrag der Baumstruktur ist der Name des Reports.

Wie sieht der Weg aus?

Als erstes Element wählen wir ein Textfeld für den Report aus. In den Eigenschaften gibt es im Bereich "Sonstige" die Property "DocumentMapLabel". Dort tragen wir den Text Textfeld ein.

So fahren wir dann auch mit der Tabelle fort und danach wollen wir eine Unterstruktur bilden, die man aufklappen kann. Zu Unterstrukturen kommt es immer dann, wenn DocumentMapLabel geschachtelt eingesetzt werden. Hier definieren wir also ein Rechteck und schieben in das Rechteck ein Textfeld. Beide bekommen ein Label und schon ist die Unterstruktur fertig.

Eine andere Möglichkeit für Unterstrukturen ist die Verwendung von Unterberichten. Wir verwenden also einen Unterbericht und setzen dazu im Hauptbericht das DocumentMapLabel auf Unterbericht. Im Unterbericht selber gibt es dann wieder ein Textfeld und eine Tabelle. Außerdem habe ich hier noch eine Unterstruktur eingebaut. In den Details der Tabelle erhält jede Zelle mit der Ticketnr einen Ausdruck für das DocumentMapLabel: = "Daten der Ticketnr " & CStr(Fields!Ticketnr.Value)

So können also dynamische Label erzeugt werden und z. B. mehrfach verwendete Unterberichte anhand der Parameter unterschiedliche Label erzeugen. So fällt dann auch die Navigation in längeren Berichten deutlich leichter. Falls sich die angesteuerten Label bereits im sichtbaren Bereich der Seite befinden, erfolgt auch kein weiteres Scrollen. Hier wäre die Definition von Bookmarks notwendig, die aber ebenfalls in den Reports vorgesehen ist.

Welche Auswirkungen hat das auf Exporte?

Das schöne an diesem Konstrukt ist, dass es sich nicht nur auf den Browser auswirkt, sondern auch in den exportierten Ergebnissen wiederfindet. Hier zeige ich die Darstellung im Excel und im PDF. Als Anhang habe ich beide Dateitypen zur Verfügung gestellt, damit jeder mal selber ausprobieren kann, wie sich das auswirkt. Je nach PDF-Viewer muss man sich die Lesezeichen anzeigen lassen, um die Struktur zu sehen. Alle Dokumentenstrukturen sind immer voll klickbar und bringen einen schnell zu den richtigen Daten.

Excel

  documentmaplabel_3.xls

PDF

  documentmaplabel_3.pdf

Was wäre noch zu erwähnen?

Wer einen Export nach Excel macht, möchte auch gerne seine Tabellenblätter mit sprechenden Namen versehen. Wie das geht, zeige ich im nächsten Artikel.