Category Archives: Report Viewer

Report Viewer: externe Bilder darstellen

Will man externe Bilder darstellen, könnte es sein, dass man über die Syntax der Pfadangabe stolpert. Ich hatte direkt den Pfad zum Bild eingetragen und war etwas verwundert, dass MS anhand der Backslashes in der Pfadangaben nicht von selbst auf den Dateizugriff kam. Man muss es also klar voranstellen, was man will. Report Viewer unterstützt Bilder über Http- und File-Zugriff:

  • Http:
    http://www.Beispiel.de/MeinBild.png
  • File:
    file:\\\D:\Ordner\MeinBild.png

Aus Sicherheitsgründen muss man zusätzlich den externen Zugriff bei Bildern auch erlauben:

reportViewer1.EnableExternalImages = true;

Cheers,
Ralf

Report Viewer: Berichte mit Master-Detail-Ansicht

Grundsätzlich ist ja der Aufbau der Reports so, dass alles von oben nach unten abgearbeitet wird. Wenn wir beispielsweise zwei Tabellen (Tablix-Elemente) mit Schülern und Noten untereinander setzen, dann bekommen wir zuerst alle Schüler und danach die Notenliste.

In einem Bericht möchte man aber häufig eine kombinierte Ansicht. Man möchte nacheinander alle Noten pro Schüler … und das am besten seitenweise getrennt.

Wenn man das mit RDLC-Files machen möchte dann bereitet man die Daten am besten in einer flachen Tabelle vor. Jede Zeile hat also neben der Schülerinformation (z.B. Name, Geburtsdatum, …) auch die Informationen zu der einzelnen Note (z.B. Fach, Note).

In der Design-Ansicht des Berichts, muss man dann die Notentabelle in ein List-Elemente packen. Bei diesem List-Element stellt man unter „Row Properties“ eine Gruppierung über die Schüler ein und den Seitewechsel nach jedem Schüler.

Die Tabelle innerhalb bekommt dann automatisch alle Zeilen dieses Schülers. Wenn man in der Tabelle eine „Column Group“ mit Gruppierung über das Fach definiert, dann sieht man für jede Note des jeweiligen Fachs eine Spalte. Bilder dazu folgen, wenn ich mehr Zeit habe …

Streng genommen ist ein List-Element (mittlerweile) ein spezielles Tablix-Element. Beispiel zu beiden Varianten findet man hier:

http://www.gotreportviewer.com/masterdetail/index.html

Cheers,
Ralf

Report Viewer: Es muss nicht immer teuer sein

Bisher dachte ich, man bräuchte zwingend ein „Third-Party“-Produkt, um praktikabel Berichte unter .NET (Windows Forms) zu erzeugen. Viele Stimmen sagten immer, dass es zu kompliziert wäre mit den Boardmitteln von MS einen Ausdruck zu erzeugen oder PDF-Dokumente zu generieren.

Mit der Report Viewer Engine ist dies aber meiner Meinung nach durchaus möglich. Sie ist in Visual Studio integriert und bedarf beim Deployment lediglich einer zusätzlichen Setup-Anwendung (man kann bestimmt das auch über ein MSM-File in das eigene Setup einbauen, aber Setups sind bei unseren Projektentwicklungen nicht das Thema).

Als Einstieg hatte ich mir einfach den ersten Treffer bei Google angesehen und dabei auch gleich ein paar nette Beispiele entdeckt:
http://www.gotreportviewer.com/

Natürlich ist das ganze nicht so komfortable wie gekaufte Produkte und hat leider auch ein paar Macken, die man relative schnell entdeckt und sich deshalb auch etwas über Microsoft wundert :-)

  1. Ärgerlich ist, dass bei der Undo- bzw. Redo-Programmierung gespart wurde. Ich hatte ein paar Mal erlebt, dass bei Redo sich Visual Studio verabschiedete und Undo nicht den letzten Schritt wiederherstellte, sondern einen der ersten Schritte … Auf Redo verichte ich ganz, speichere deshalb vor Undo lieber regelmäßig ab.
  2. Im Internet sind häufig ältere Samples zu finden, die dann in VS 2010 zuerst hochkonvertiert werden. Führt man mit der neue VS-Version die beschriebenen Schritte in der IDE durch kommt es leider hin und wieder  vor, dass das Verhalten beider Varianten  nicht identisch ist. Da hilft ein Blick in die XML-Struktur der RDLC-Datei.
  3. Hin und wieder bleibt das „Report Data“-Fenster auch in der Codeansicht offen und wird dann nicht neugezeichnet. Sieht hässlich aus, stört aber eigentlich nicht wirklich.

Es lohnt sich mal einen Versuch zu wagen. Setzt man rdlc-Files gepaart mit xsd-Files bekommt man auch mit MS-Mitteln einen ansprechenden Bericht unter Windows-Forms hin ohne eine Zeile zu coden.

Cheers,
Ralf