FastReport auf Rechnung nur letzten Lieferschein

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Anzahl Datensätze vergleichen mit aktuellem Datensatz

Manchmal will man nur den letzten Datensatz ausdrucken, beispielsweise in einem Rechnungsformular nur den letzten Lieferschein.

Beispiel:

In einem Rechnungs-Report gibt es ein Band, in dem die Lieferscheine zu dem zugehörigen Auftrag aufgeführt sind:


FastReport TippsUndTricks Rechnung LieferscheineNurLetzter 01.png

Das sieht so aus:

FastReport TippsUndTricks Rechnung LieferscheineNurLetzter 02.png

Nun will man aber nur den letzten Lieferschein haben!

Dazu muss man das Band im Designer anklicken und im Objektinspektor auf das Register "Ereignisse" klicken.

In der Zeile "OnBeforePrint" macht man dann einen Doppelklick und kommt in das Code-Fenster:


procedure DetailDataLieferscheinNummernOnBeforePrint(Sender: TfrxComponent);
begin

end;


Nun fügt man diesen Code ein:


procedure DetailDataLieferscheinNummernOnBeforePrint(Sender: TfrxComponent);
begin
  // Nur LETZTEN Datensatz aufführen:
  if <Line#> = DetailDataLieferscheinNummern.DataSet.RecordCount then
    DetailDataLieferscheinNummern.Visible := True
  else
    DetailDataLieferscheinNummern.Visible := False;

end;

<Line#>
In dieser Variablen legt FastReport die "Zeilennummer" (=Datensatz-Nummer) des gerade eingelesenen Datensatzes ab. Das ist einfach eine fortlaufende Nummer ab 1.
DetailDataLieferscheinNummern.DataSet.RecordCount
Jetzt wird es etwas kompliziert:
Jedes Band hat eine zugehörige Datenbank-Tabelle bzw. Datenbank-Abfrage. In diesem Fall hat das Band "DetailDataLieferscheinNummern" die Datensätze ("DataSet") aus den Lieferscheinen.
"RecordCount" enthält nun die Anzahl der Datensätze des Bandes, in unserem Fall also die Anzahl der Lieferscheine zu dem zugehörigen Auftrag.

Wenn also das hier zutrifft...

  if <Line#> = DetailDataLieferscheinNummern.DataSet.RecordCount then

...dann hat man in diesem Augenblick den letzten Datensatz und kann das Band einblenden...

    DetailDataLieferscheinNummern.Visible := True

...ansonsten ist es nicht der letzte Datensatz und das Band soll ausgeblendet werden:

  else
    DetailDataLieferscheinNummern.Visible := False;


Das sieht dann so aus:

FastReport TippsUndTricks Rechnung LieferscheineNurLetzter 03.png



2 Links