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.
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 OnAfterPrint
vom Detail-Bereich und gibt folgenden Code ein:
procedure DetailPositionenOnAfterPrint(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, nachdem die Detail-Positionen gedruckt wurden.
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.