text: Wer einmal mit .net gedruckt hat, wird schnell die Vorteile eines Reportingtools wie Crystal Report oder List & Label zu schätzen wissen. Das Druckdesign kann im Designer ohne das mühsame Nachzählen der Pixel formatiert werden. Selbst der Anwender kann ohne viel Wissen die Vorlagen an seine Corporate Identity anpassen. Mit wenigen Clicks kann man die Reportingtools in die Anwendung ziehen. Doch das bringt einige Probleme mit sich:
  - Die Anwendung wird an vielen Stellen mit dem Tool verheiratet. Das Tool zu wechseln ist dann sehr aufwendig.
  - Es ist sehr aufwendig, an allen Stellen das Tool gleich zu implementieren und alle Änderungen an allen Stellen nachzuziehen.
  - Alle Entwickler, die am Projekt arbeiten wollen müssen das Tool installieren und benötigen eine Lizenz.
  Um diese Probleme zu umgehen kann man in der Architektur der Anwendung Drittanbieter Tools in einem eigenen Projekt entkoppeln. Damit wird dann eine eigene Dll aufgerufen. Diese Dll selbst hat eine Schnittstelle, die keine Rückschlüsse auf das Tool zuläßt. So kennt die Anwendung nur die Schnittstelle und benötigt von dem Tool nur die Komponenten, die ausgeliefert werden müssen. Nur auf den Rechnern, auf denen die Dll codiert und compiliert wird, muss das Tool installiert sein. Generell ist dies ein Ansatz aus der mehrschichtigen Software Architektur. Wie man das macht, möchte ich am Beispiel von List & Label zeigen. Bitte beachten Sie die jeweiligen Lizenzbestimmungen unter denen Sie Ihre Software erworben haben.
  Zuerst muss die Schnittstelle definiert werden. Sie hat eine Funktion fürs Drucken, für die Preview und zum Starten des Designers. Man kann den Report und die Daten übergeben. Die Daten unterscheide ich nach den Werten, die einmal an das Dokument übergeben werden (Values) und den Tabellen. Ich habe mich bei der Übergabe der Daten für Datatables entschieden, weil hier auch in leeren Feldern der Name und der Type des Wertes bekannt ist (Dafür gibt es auch andere Lösungen).
  Der eigentliche Service implementiert das Interface und seine Methoden. Für den richtigen Aufruf des Tools implementiert man das Tool am besten mit dem Visual Studio Designer in einer Testform und übernimmt den so erzeugten Quelltext.
  Die Übergabe der Daten an List & Label geschieht auf die übliche Art. Da mehrere Tabellen gedruckt werden sollen, List & Label das aber nicht kann, müssen bei der Datenübergabe alle Tabellen in einer zusammengefasst werden.
  Im List & Label Designer kann man dann mehrere Tabellen anlegen, dort die Spalten der Tabelle auswählen und in der Darstellungsbedingung die Zeilen mit dem richtigen Namen herausfiltern.