CrystalReports: Unterberichte: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
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:CrystalReports_Unterbericht_Bsp2_Datenquelle.jpg|200px|thumb|links|Datenquelle festlegen]]
+
[[Datei:CrystalReports_Unterbericht_Bsp2_Datenquelle.jpg|200px|thumb|rechts|Datenquelle festlegen]]
  
 
Mit der Schaltfläche '''<code>Ende</code>''' geht's weiter.
 
Mit der Schaltfläche '''<code>Ende</code>''' geht's weiter.
 +
 +
 +
 +
  
  
Zeile 55: Zeile 59:
  
 
Nun müssen Sie auswählen, mit welcher Datenbank-Tabelle Sie arbeiten wollen, in unserem Beispiel ist es die Tabelle <code>'''MEMOTEXTE'''</code>:
 
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|links|Tabelle festlegen]]
+
[[Datei:CrystalReports_Unterbericht_Bsp3_Tabelle.jpg|200px|thumb|rechts|Tabelle festlegen]]
 +
 
 +
 
 +
 
 +
 
 +
 
  
 
Mit der Schaltfläche '''<code>Weiter</code>''' geht's weiter.
 
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.
 
Anschließend müssen Sie auswählen, welche Felder Sie in den Bericht übernehmen wollen.
  
[[Datei:CrystalReports_Unterbericht_Bsp4_Felder.jpg|200px|thumb|links|Felder festlegen]]
+
[[Datei:CrystalReports_Unterbericht_Bsp4_Felder.jpg|200px|thumb|rechts|Felder festlegen]]
  
 
In unserem Beispiel sind das die Felder:
 
In unserem Beispiel sind das die Felder:
Zeile 75: Zeile 89:
  
  
 +
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!

Version vom 18. März 2013, 21:28 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)
  • DATUM (Das Erfassungsdatum)




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.2.4 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!