Subreport Control
DevExpress® bietet von Haus aus SubReports. Diese bilden einen Hybrid unserer Use cases, aber erfüllen keinen dieser vollständig.
Aus diesem Grund bietet der FS Report Designer zwei spezielle Varianten von Subreports:
- Embedded Subreport - wird vollständig in den Haupt-Report eingebettet
- Linked Subreport - wird beim Druck voll dynamisch gezogen.
Funktional handelt es sich dabei jeweils um das Control von DevExpress®. Hier werden lediglich die Besonderheiten im FS Report Designer erklärt.
Embedded Subreport
Es handelt sich um einen Subreport, der vollständig in den Hauptreport eingebettet ist und zusammen mit diesem in einer Datei gespeichert wird.
Beim Druck werden die Reports als ein gemeinsamer, größerer Report behandelt.
Ein Embedded Subreport sollte genutzt werden, wenn ein DetailReportBand keine Option ist (z.B. für eine Iteration über eine separate Datenquelle im Reportkopf).
Im WinForms-Designer lässt er sich über einen Doppelklick auf das Control neu anlegen oder editieren.
Da alle Subreports in derselben Datei gespeichert sind, werden beim Auslösen eines Speichervorgangs alle Subreports zusammen mit dem Hauptreport gespeichert. Als Datenquelle wird die des Hauptreports genutzt. Um diese zu filtern sollten Report-Parameter eingesetzt werden.
Note
Wenn möglich, sollte statt eines embedded Subreports ein DetailReportBand eingesetzt werden (insbesondere für verschachtelte Positionen).
Beim initialen Hinzufügen eines Embedded Subreports wird der DataMember aus der DataMember-Eigenschaft des Haupt-Reports übernommen. Ist ein anderer DataMember im Embedded Report gewünscht, kann dieser geändert werden.
Änderungen speichern
Embedded Subreports sind Status-synchronisiert mit ihrem Quellreport. Das bedeutet konkret, dass jede Änderung an einem Embedded Subreport im Status des Hauptreports widergespiegelt wird.
Haupt- und Subreport werden immer gemeinsam gespeichert, unabhängig von der Anzahl der geöffneten Subreports. Ein Save auf einem der Tabs führt immer automatisch einen Save auf den Hauptreport aus.
Linked Subreport
Es handelt sich um einen Subreport, der als Link in den Hauptreport eingefügt wird. In der Hauptreport-Datei wird lediglich die URL auf die Subreport-Datei gespeichert.
Beim JEDEM Druck wird die URL des Subreports neu aufgelöst und dessen Inhalt frisch in den Haupt-Report eingebettet. Dadurch wird eine echte Modularität erzielt. Hauptreport und Subreport können unabhängig voneinander bearbeitet / customized werden.
Um sie zu nutzen, muss über den Smart Tag des Reports ein bestehender Report ausgewählt werden.
Nach der Auswahl wird die Url des selektierten Reports automatisch auf Höhe des Report-Verzeichnisses relativiert. Dies garantiert, dass der Subreport zum Druckzeitpunkt auf Basis des aktuellen Verzeichnisses seinen Ziel-Report selektiert und auswählt.
Im Designer öffnet ein Doppelklick auf einen Linked Subreport diesen im Readonly-Modus. Um einen Subreport editieren zu können, muss dieser über den entsprechenden Report Document Type aus Framework Studio heraus geöffnet werden.
Generate Own Pages
Diese Option ändert das Verhalten des Subreports: Statt in das Subreport-Control gedruckt zu werden, generiert sich der Subreport als vollwertiger Report. Der generierte Subreport wird nicht auf die Seite des Hauptreports gedruckt, es werden stattdessen seine Seiten zu oder zwischen die des Hauptreports gelegt.
Use Cases
Je nach Use Case empfiehlt sich entweder die Verwendung von Linked Subreports, Embedded Subreports oder Detail-Bands. Unter welchen Anforderungen/Voraussetzungen, welches Element verwendet werden sollte, wird im Folgenden erörtert.
Werden dem RootReport zwei Collections mittels Datasource übergeben und es sollen beide Collections angezeigt werden, muss für die zweite Collection ein Subreport verwendet werden.
Ein Embedded Subreport sollte genutzt werden, wenn ein DetailReportBand keine Option ist. Zum Beispiel für eine Iteration über eine separate Datenquelle im ReportHeader oder PageHeader.
Auch bei einer Ansicht von zwei Collections nebeneinander müssen Subreports verwendet werden.
Parameter
DevExpress® erlaubt es, an einen Report beim Druck sogenannte Report-Parameter zu übergeben. Parameter ermöglichen es Report Daten dynamisch zu filtern. Diese enthalten arbiträre Werte und lassen sich in der Field List pflegen.
In der Field List können Sie über das Kontextmenü der Parameters diese editieren oder einen neuen Parameter hinzufügen:
Parameter finden insbesondere bei verlinkten Subreports Einsatz, wenn z.B. auf Basis einer ID nur über einen begrenzten Teil des Datensatzes iteriert werden soll. Um dies zu erreichen sollten Parameter Bindings am Subreport in Verbindung mit Filter Strings eingesetzt werden.
Innerhalb einer Expression ist ein Report-Parameter mit der Syntax „?ParameterName“ abrufbar und verhält sich wie ein Calculated Field.