FastReport Gruppenkopf unterdrücken, wenn keine Daten mehr kommen: Unterschied zwischen den Versionen
(→Der Code) |
|||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 4: | Zeile 4: | ||
* Siehe das Beispiel in [[FastReport Beispiel Auftragsformular Struktur der Positionen]]. | * Siehe das Beispiel in [[FastReport Beispiel Auftragsformular Struktur der Positionen]]. | ||
+ | |||
+ | * Siehe auch [[FastReport Standard-Auftragsformular]]. | ||
Es kann nun aber vorkommen, dass die Positionen gerade an Ende einer Seite aufhören und auf der nächsten Seite trotzdem noch die Überschrift dazu gedruckt wird. Das sieht unschön aus: | Es kann nun aber vorkommen, dass die Positionen gerade an Ende einer Seite aufhören und auf der nächsten Seite trotzdem noch die Überschrift dazu gedruckt wird. Das sieht unschön aus: | ||
Zeile 24: | Zeile 26: | ||
Um das zu verhindern, klickt man in das Ereignis '''<code>OnBeforePrint</code>''' der Überschrift (Bereich '''ChildHeaderPositionen''') und gibt folgenden Code ein: | Um das zu verhindern, klickt man in das Ereignis '''<code>OnBeforePrint</code>''' der Überschrift (Bereich '''ChildHeaderPositionen''') und gibt folgenden Code ein: | ||
− | procedure ChildHeaderPositionenOnBeforePrint(Sender: TfrxComponent); | + | procedure ChildHeaderPositionenOnBeforePrint(Sender: TfrxComponent); |
− | begin | + | begin |
− | + | // Überschriftszeile unterdrücken, wenn keine Positionen mehr kommen: | |
− | + | if DetailPositionen.DataSet.EOF then | |
− | + | ChildHeaderPositionen.Visible := False | |
− | + | else | |
− | + | ChildHeaderPositionen.Visible := True; | |
− | end; | + | end; |
− | + | ||
Dieses Code wird ausgeführt, '''bevor''' die Überschrift gedruckt wird. | Dieses Code wird ausgeführt, '''bevor''' die Überschrift gedruckt wird. | ||
Zeile 56: | Zeile 58: | ||
;Beispiel: | ;Beispiel: | ||
:Das DataSet '''Positionen''' im Auftragsformular kommt aus einer Datenbank-Abfrage, in der die Auftragspositionen, Artikeldaten, berechnete Felder (wie z.B. Gewichte) zusammen "gemischt" wurden und als '''Positionen''' zur Verfügung gestellt werden. | :Das DataSet '''Positionen''' im Auftragsformular kommt aus einer Datenbank-Abfrage, in der die Auftragspositionen, Artikeldaten, berechnete Felder (wie z.B. Gewichte) zusammen "gemischt" wurden und als '''Positionen''' zur Verfügung gestellt werden. | ||
− | |||
== Das Ergebnis == | == Das Ergebnis == |
Aktuelle Version vom 22. Dezember 2015, 14:33 Uhr
Inhaltsverzeichnis
1 Allgemeines
Man kann den Gruppenkopf einer Gruppe ganz gut dazu benutzen, eine Überschrift über die Positionen zu drucken, die auch auf jeder Seite wiederholt wird.
- Siehe das Beispiel in FastReport Beispiel Auftragsformular Struktur der Positionen.
- Siehe auch FastReport Standard-Auftragsformular.
Es kann nun aber vorkommen, dass die Positionen gerade an Ende einer Seite aufhören und auf der nächsten Seite trotzdem noch die Überschrift dazu gedruckt wird. Das sieht unschön aus:
Beispiel:
Dieses Band soll unterdrückt werden, wenn es keine Positionen mehr gibt:
1.1 Der Code
Um das zu verhindern, klickt man in das Ereignis OnBeforePrint
der Überschrift (Bereich ChildHeaderPositionen) und gibt folgenden Code ein:
procedure ChildHeaderPositionenOnBeforePrint(Sender: TfrxComponent); begin // Überschriftszeile unterdrücken, wenn keine Positionen mehr kommen: if DetailPositionen.DataSet.EOF then ChildHeaderPositionen.Visible := False else ChildHeaderPositionen.Visible := True; end;
Dieses Code wird ausgeführt, bevor die Überschrift gedruckt wird.
1.2 EOF
Im Code wird das DataSet der DetailPositionen abgefragt. Die Abfrage EOF
("End of File") ist True
, wenn das Ende der Positionen erreicht ist. Wörtlich übersetzt bedeutet es eigentlich "Ende der Datei". Das DataSet ist zwar keine Datei, aber in den meisten Programmiersprachen hat sich "EOF
" als Ende einer Abfrage durchgesetzt.
- Also
EOF
=False
, wenn noch Daten (Positionen) kommen.EOF
=True
, wenn keine Daten (Positionen) mehr kommen.
1.3 Das DataSet
Das DataSet wurde beim Anlegen des Bandes festgelegt und hier angezeigt:
- Hinweis
- Als DataSet bezeichnet FastReport die Tabellen der Datenbank. Warum heißt es dann nicht Tabellen? Die Antwort ist einfach: Weil FastReport nicht weiß, ob die Daten direkt aus einer Datenbank-Tabelle kommen oder aus einer komplexen Abfrage, bei der Daten aus mehreren Tabellen in einer Abfrage zusammengenommen werden.
- Beispiel
- Das DataSet Positionen im Auftragsformular kommt aus einer Datenbank-Abfrage, in der die Auftragspositionen, Artikeldaten, berechnete Felder (wie z.B. Gewichte) zusammen "gemischt" wurden und als Positionen zur Verfügung gestellt werden.
2 Das Ergebnis
Nun der Kopf auf der letzten Seite so aus:
Die Überschrift für die Positionen ist weg!