FastReport Gruppenkopf unterdrücken, wenn keine Daten mehr kommen
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!