CrystalReports: Unterberichte: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
 
(8 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 35: Zeile 35:
 
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'''.  
 
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'''.  
  
=== Unterbricht einfügen ===
+
=== 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:
 
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:
Zeile 47: Zeile 47:
 
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".
 
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".
  
[[Datei:Datei:CrystalReports_Unterbericht_Bsp2_Datenquelle.jpg|200px|thumb|rechts|Datenquelle festlegen]]
+
[[Datei:CrystalReports_Unterbericht_Bsp2_Datenquelle.jpg|200px|thumb|rechts|Datenquelle festlegen]]
  
 +
Mit der Schaltfläche '''<code>Ende</code>''' geht's weiter.
  
 +
 +
 +
 +
 +
 +
==== Tabelle und Felder festlegen ====
 +
 +
Nun müssen Sie auswählen, mit welcher Datenbank-Tabelle Sie arbeiten wollen, in unserem Beispiel ist es die Tabelle <code>'''MEMOTEXTE'''</code>:
 +
[[Datei:CrystalReports_Unterbericht_Bsp3_Tabelle.jpg|200px|thumb|rechts|Tabelle festlegen]]
 +
 +
 +
 +
 +
 +
 +
Mit der Schaltfläche '''<code>Weiter</code>''' geht's weiter.
 +
 +
 +
 +
 +
 +
 +
Anschließend müssen Sie auswählen, welche Felder Sie in den Bericht übernehmen wollen.
 +
 +
[[Datei:CrystalReports_Unterbericht_Bsp4_Felder.jpg|200px|thumb|rechts|Felder festlegen]]
 +
 +
In unserem Beispiel sind das die Felder:
 +
 +
* <code>AUFTRNR</code> (Auftragsnummer)
 +
* <code>BETREFF</code> (Die kurze Betreffszeile)
 +
* <code>MEMOTEXT</code> (Der eigentliche Memo-Text)
 +
 +
 +
 +
 +
 +
 +
 +
Mit der Schaltfläche '''<code>Weiter</code>''' 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 '''<code>Ende</code>''' beenden Sie den Assistenten.
 +
 +
==== 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.
 
* 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 <code>AUFTRNR</code> 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 <code>?pm-MaufKo.AuftrNr</code>'''. Dieses Parameter-Feld stellt die Verbindung zwischen der AUFTRNR des Hauptberichts und der AUFTRNR des Unterberichts her!
 +
 +
[[Datei:CrystalReports_Unterbericht_Bsp5_Verknuepfung.jpg]]
 +
 +
 +
=== Unterbericht speichern und platzieren ===
 +
 +
Mit der Schaltfläche '''<code>OK</code>''' 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.
 +
 +
[[Datei:CrystalReports_Unterbericht_Bsp6_Platzieren.jpg]]
 +
 +
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:
 +
 +
[[Datei:CrystalReports_Unterbericht_Bsp6_UnterberichtPlatziert.jpg]]
 +
 +
=== 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.
 +
 +
[[Datei:CrystalReports_Unterbericht_Bsp7_UnterberichtBearbeiten.jpg]]
 +
 +
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

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:

CrystalReports Unterbericht Bsp1 Einfuegen1.jpg

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".

Datenquelle festlegen

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:

Tabelle festlegen




Mit der Schaltfläche Weiter geht's weiter.




Anschließend müssen Sie auswählen, welche Felder Sie in den Bericht übernehmen wollen.

Felder festlegen

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!

CrystalReports Unterbericht Bsp5 Verknuepfung.jpg


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.

CrystalReports Unterbericht Bsp6 Platzieren.jpg

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:

CrystalReports Unterbericht Bsp6 UnterberichtPlatziert.jpg

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.

CrystalReports Unterbericht Bsp7 UnterberichtBearbeiten.jpg

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:

CrystalReports Unterbericht Bsp8 UnterberichtEntwurf.jpg

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:

CrystalReports Unterbericht Bsp9 Auswahl.jpg

Geben Sie die Auswahl der Lieferschein-Nummer ein:

CrystalReports Unterbericht Bsp9 AuswahlAssi.jpg

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:

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:

CrystalReports Unterbericht Bsp10 Vorschau2.jpg