CrystalReports: Unterberichte: Unterschied zwischen den Versionen
Zeile 133: | Zeile 133: | ||
Wie sie sehen, sieht alles im Unterbericht "ganz normal" aus. Sie können nun also die Felder so verschieben, wie Sie es wollen, Überschriften einsetzen usw. | Wie sie sehen, sieht alles im Unterbericht "ganz normal" aus. Sie können nun also die Felder so verschieben, wie Sie es wollen, Überschriften einsetzen usw. | ||
+ | |||
+ | Beispiel: | ||
+ | |||
+ | [[Datei:CrystalReports_Unterbericht_Bsp8_UnterberichtEntwurf.jpg]] | ||
+ | |||
+ | === Vorschau anzeigen === | ||
+ | |||
+ | Sie können nun die Vorschau des Berichts anzeigen. Dazu sollten Sie in den Hauptbericht gehen und '''F5''' drücken. | ||
+ | |||
+ | '''Das Problem:''' | ||
+ | |||
+ | Es werden nun alle Lieferscheine, die in der Datenbank sind, angezeigt. Der Bereicht zeigt also eine "Riesen-Liste" an! Daher ist es empfehlenswert, einen Filter einzurichten, der einen '''bestimmten Lieferschein''' auswählt. Suchen Sie dazu in [[REFLEX]] einen bestimmten Auftrag bzw. Lieferschein aus und merken sich die Lieferschein-Nummer. Gehen Sie zu CrystalReports zurück und öffnen den Auswahl-Assistenten: | ||
+ | |||
+ | [[Datei:CrystalReports_Unterbericht_Bsp9_Auswahl.jpg]] | ||
+ | |||
+ | Geben Sie die Auswahl der Lieferschein-Nummer ein: | ||
+ | |||
+ | [[Datei:CrystalReports_Unterbericht_Bsp9_AuswahlAssi.jpg]] | ||
+ | |||
+ | Nun zeigt die Vorschau nur den ausgewählten Lieferschein! | ||
+ | |||
+ | '''Wichtig!'''<br> | ||
+ | |||
+ | '''Wenn Sie den Report freigeben, müssen Sie den Auswahl-Assistenten noch einmal öffnen und die Selektion unbedingt entfernen!''' Sonst wird nur dieser eine Lieferschein korrekt ausgegeben, alle anderen werden '''nicht''' funktionieren! | ||
+ | |||
+ | === Vorschau sieht merkwürdig aus === | ||
+ | |||
+ | Wenn Sie die Vorschau starten, bekommen Sie folgende Anzeige: | ||
+ | |||
+ | [[Datei:CrystalReports_Unterbericht_Bsp10_Vorschau1.jpg]] | ||
+ | |||
+ | Das ist nicht das, was Sie erwartet haben, oder? Der Grund liegt darin, das das Memo-Feld ein formatiertes Feld im sog. "RTF-Format" ist. Das Memo-Feld enthält also nicht nur den eingegebenen Text, sondern auch sog. "Steuerzeichen". Auch wenn Sie im Memo keine Formatierung angegeben haben, stehen in dem Memo Steuerzeichen! | ||
+ | |||
+ | Wie kann man nun einen vernünftigen Memo-Text anzeigen? | ||
+ | |||
+ | Nun, das geht ganz einfach: | ||
+ | |||
+ | Klicken Sie mit der '''rechten Maustaste''' auf das Memo-Feld und wählen aus dem Menü '''Feld formatieren'''. In dem Abschnitt '''Textinterpretation''' wählen Sie '''RTF-Text'''. | ||
+ | |||
+ | Nun sieht die Vorschau schon besser aus: | ||
+ | |||
+ | [[Datei:CrystalReports_Unterbericht_Bsp10_Vorschau2.jpg]] |
Aktuelle Version vom 18. März 2013, 22:18 Uhr
Inhaltsverzeichnis
1 Was sind Unterberichte?
Ein Unterbericht ist ein Bericht in einem Bericht. Man kann in einen Report fast beliebig viele Unterberichte einfügen. Ein Unterbericht wird folgendermaßen eingefügt:
- Man öffnet den Report, in den man einen Unterbericht einfügen will.
- Man wählt aus dem Menü Einfügen-->Unterbricht.,
- Man gibt einen Namen für den Unterbericht ein, der möglichst aussagekräftig ist.
- Man öffnet den Berichtsassistenten, um den Bericht festzulegen.
- Man legt im Register Verknüpfungen fest, wie der Unterbericht mit dem Hauptbericht verbunden werden soll.
Der Unterbericht hat alle Bestandteile eines "normalen" Berichts, also Kopf-Bereiche, Details und Fuß-Bereiche.
2 Warum Unterberichte?
Es gibt Situationen, wo man Details aus mehreren Tabellen unabhängig voneinander auflisten will. Beispiel:
In einem Lieferschein will man die Positionen des Lieferscheins aufführen, das ist klar. Die Positionen befinden sich dann üblicherweise im Detail-Bereich des Berichts. Es werden also alle Positionen des Lieferscheines aufgelistet.
Will man nun aber z.B. auch die Termine des Auftrags auflisten, stellt sich die Frage: Wo sollen die Terminfelder im Bereicht stehen?
In Detail-Bereich nicht, da stehen ja schon die Positionen! Würde man einfach einen neuen Detail-Bereich einfügen und da die Termin-Felder platzieren, würde das einen "Misch-Masch" zwischen Lieferschein-Positionen und Terminen geben. Hinter jeder einzelnen Position würden alle Termine stehen! Das geht also nicht.
Die Lösung bietet ein Unterbericht: Dieser Unterbericht benimmt sich wie ein eigenständiger Bericht, er hat einen Seiten- und Berichtskopf, einen Seiten- und Berichtsfuß und eben seinen eigenen Detail-Bereich! Der Unterbericht wird z.B. im Berichts-Fuss eingefügt. Damit wird am des Hauptberichts, wenn alle Lieferscheinpositionen aufgelistet wurden, eine Liste mit den Termin-Positionen aufgeführt.
Auf diese Art und Weise könnte man nun auch noch z.B. die Memo-Texte des Auftrags auflisten: Man fügt einfach einen weiteren Unterbericht ein, in dessen Detail-Bereich die Auftrags-Memos aufgeführt werden!
3 Anwendung eines Unterberichts am Beispiel eines Lieferscheins mit Memo-Texten
An diesem Beispiel wird die Anwendung eines Unterberichts erläutert. Wenn Sie dieses Beispiel nachvollziehen möchten, öffnen Sie einen bestehenden Lieferschein-Bericht und speichern ihn sicherheitshalber gleich unter einem anderen Namen ab.
Der Unterbericht soll im Berichtsfuß stehen, also am Ende der Lieferschein-Positionen. Sie könnten ihn auch im Berichtskopf platzieren, wenn Ihnen das lieber ist. Nur im Detail-Bereich, im Seitenkopf und Seitenfuß macht er keinen Sinn.
3.1 Eine Sektion im Berichtsfuß einfügen
Damit wir Platz haben für unseren Unterbericht, klicken Síe links im Berichtsfuß mit der rechten Maustaste und wählen aus dem Menü Sektion unterhalb einfügen.
3.2 Unterbericht einfügen
Wählen Sie aus dem Menü Einfügen-->Unterbricht. Geben Sie einen Namen für den Unterbericht ein, der möglichst aussagekräftig ist. Beispiel:
Dann öffnen Sie den Berichtsassistenten mit einem Klick auf die entsprechende Schaltfläche Berichtsassistent, um die Einzelheiten des Berichts festzulegen.
3.2.1 Datenquelle festlegen
Genau wie bei einem "normalen" Report müssen nun die Datenquelle festlegen, also z.B. die REFLEX-Datenbank. Normalerweise ist das der ODBC-Eintrag "REFLEX".
Mit der Schaltfläche Ende
geht's weiter.
3.2.2 Tabelle und Felder festlegen
Nun müssen Sie auswählen, mit welcher Datenbank-Tabelle Sie arbeiten wollen, in unserem Beispiel ist es die Tabelle MEMOTEXTE
:
Mit der Schaltfläche Weiter
geht's weiter.
Anschließend müssen Sie auswählen, welche Felder Sie in den Bericht übernehmen wollen.
In unserem Beispiel sind das die Felder:
-
AUFTRNR
(Auftragsnummer) -
BETREFF
(Die kurze Betreffszeile) -
MEMOTEXT
(Der eigentliche Memo-Text)
Mit der Schaltfläche Weiter
geht's weiter.
Die Seiten 'Gruppierung und Datensatzauswahl können wird in unsrem Beispiel überspringen. Natürlich können Sie in Ihrem konkreten Fall durchhaus gruppen wollen oder nur bestimmte Datensätze auswählen wollen. In diesem Fall müssten Sie auf diesen Seite entsprechende Angaben machen.
Mit der Schaltfläche Ende
beenden Sie den Assistenten.
3.2.3 Verknüpfungen
Dies ist ein sehr wichtiger Punkt!
Über die Verknüpfung legen Sie fest, wie die Daten im Unterbericht gefiltert werden sollen. In unserem Fall ist es ja so, dass wir nur die Memo's eines bestimmten Auftrags sehen wollen, nämlich des Auftrags, auf den sich auch der Lieferschein bezieht! Also müssen wir dem Unterbericht "sagen", dass er nur die Daten auflisten soll, die zu der Auftragsnummer des Lieferscheins gehören.
- Man legt im Register Verknüpfungen fest, wie der Unterbericht mit dem Hauptbericht verbunden werden soll.
Suchen Sie dazu in der linken Tabelle das Feld AUFTRNR
aus. Doppelklicken Sie darauf! Nun passiert folgendes:
- CrystalReports sucht im Unterbericht nach einem Feld mit dem gleichen Namen. Wir haben es oben in den Unterbericht eingefügt (und zwar nur deshalb, weil so die Verknüpfung einfacher wird).
- Dann erstellt CrystalReports automatisch ein Parameter-Feld
?pm-MaufKo.AuftrNr
. Dieses Parameter-Feld stellt die Verbindung zwischen der AUFTRNR des Hauptberichts und der AUFTRNR des Unterberichts her!
3.3 Unterbericht speichern und platzieren
Mit der Schaltfläche OK
beenden Sie das Anlegen der Unterberichts.
Der Unterbericht wird nun im Hauptbericht platziert. Dazu "hängt" CrystalReports den Unterbericht an den Maus-Cursor: Bewegen Sie die Maus zu Stelle, an der Sie den Unterbericht einfügen wollen.
Klicken Sie erst mit der linken Maustaste, wenn der Maus-Cursor an der richtigen Stelle steht!
Danach wird der Unterbericht eingefügt und als Rechteck mit dem Namen angezeigt, den Sie zuvor angegeben haben:
3.4 Unterbericht bearbeiten
Wenn Sie den Unterbericht bearbeiten wollen, so doppelklicken Sie einfach auf das angezeigte Rechteck. Der Unterbericht wird in einer neuen Registerseite geöffnet und angezeigt.
Wie sie sehen, sieht alles im Unterbericht "ganz normal" aus. Sie können nun also die Felder so verschieben, wie Sie es wollen, Überschriften einsetzen usw.
Beispiel:
3.5 Vorschau anzeigen
Sie können nun die Vorschau des Berichts anzeigen. Dazu sollten Sie in den Hauptbericht gehen und F5 drücken.
Das Problem:
Es werden nun alle Lieferscheine, die in der Datenbank sind, angezeigt. Der Bereicht zeigt also eine "Riesen-Liste" an! Daher ist es empfehlenswert, einen Filter einzurichten, der einen bestimmten Lieferschein auswählt. Suchen Sie dazu in REFLEX einen bestimmten Auftrag bzw. Lieferschein aus und merken sich die Lieferschein-Nummer. Gehen Sie zu CrystalReports zurück und öffnen den Auswahl-Assistenten:
Geben Sie die Auswahl der Lieferschein-Nummer ein:
Nun zeigt die Vorschau nur den ausgewählten Lieferschein!
Wichtig!
Wenn Sie den Report freigeben, müssen Sie den Auswahl-Assistenten noch einmal öffnen und die Selektion unbedingt entfernen! Sonst wird nur dieser eine Lieferschein korrekt ausgegeben, alle anderen werden nicht funktionieren!
3.6 Vorschau sieht merkwürdig aus
Wenn Sie die Vorschau starten, bekommen Sie folgende Anzeige:
Das ist nicht das, was Sie erwartet haben, oder? Der Grund liegt darin, das das Memo-Feld ein formatiertes Feld im sog. "RTF-Format" ist. Das Memo-Feld enthält also nicht nur den eingegebenen Text, sondern auch sog. "Steuerzeichen". Auch wenn Sie im Memo keine Formatierung angegeben haben, stehen in dem Memo Steuerzeichen!
Wie kann man nun einen vernünftigen Memo-Text anzeigen?
Nun, das geht ganz einfach:
Klicken Sie mit der rechten Maustaste auf das Memo-Feld und wählen aus dem Menü Feld formatieren. In dem Abschnitt Textinterpretation wählen Sie RTF-Text.
Nun sieht die Vorschau schon besser aus: