FastReport Tipps und Tricks: Verwendung von Feldern
Inhaltsverzeichnis
- 1 Verwendung von Feldern
- 1.1 Zeilenumbruch innerhalb von Feldern
- 1.2 Zeilenabstand in Feldern
- 1.3 Berechnungen in einem Feld
- 1.4 Zahlenwert in Text umwandeln
- 1.5 Berechnungen in einem Feld mit Formatierung
- 1.6 Datumsfeld unterdrücken, wenn kein Datum drin steht
- 1.7 Hyperlinks in Feldern
- 1.8 Nur die ersten X Stellen eines Feldes verwenden
- 2 Links
1 Verwendung von Feldern
1.1 Zeilenumbruch innerhalb von Feldern
Wenn man ein Feld in den Report einfügt, ist die Eigenschaft "Zeilenumbruch" (leider) immer eingeschaltet. Da man diesen bei den meisten Feldern nicht benötigt, kann man ihn ausschalten: Mit der rechten Maustaste auf das Feld klicken und die Eigenschaft Zeilenumbruch ausschalten.
Der ungewollte Zeilenumbruch kann dazu führen, dass unterhalb der Felder "Geisterschatten" stehen. Beispiel:
1.2 Zeilenabstand in Feldern
Wenn man den Zeilenabstand innerhalb eines Memo-Felder ändern will, kann man die Eigenschaft LineSpacing vom Standardwert 2 z.B. auf 6 ändern.
1.3 Berechnungen in einem Feld
Wenn man in einem Feld etwas berechnen möchte, muss man dazu keine Formel oder Variable verwenden wie in CrystalReports©! Man kann die Rechenformel einfach in das Feld schreiben.
Beispiel:
In einer Ladeliste möchte man eine Spalte haben mit der Auftragsmenge zzgl. der Reserve-Mengte, abzgl. der Fremdmenge, also die zu ladende eigene Menge. Dazu zieht man man einfach ein Textfeld in das entsprechende Detail-Band und stellt die Formel zusammen:
[<Positionen."Menge"> + <Positionen."MengeReserve"> - <Positionen."MengeFremd">]
Die Feldnamen kann man mit diesem Button holen:
Die eckigen Klammern
[ ... ]
legen den Anfang und das Ende der Formel fest.
Normalerweise werden Datenbank-Felder in eckigen Klammern angegeben,
- Wenn innerhalb der Formel Datenbank-Felder eingebunden werden, müssen diese jedoch in spitzen Klammern angegeben werden!
- Falsch
[[Positionen."Menge"] + [Positionen."MengeReserve"] - [Positionen."MengeFremd"] ]
- Richtig
[<Positionen."Menge"> + <Positionen."MengeReserve"> - <Positionen."MengeFremd">]
1.4 Zahlenwert in Text umwandeln
Manchmal hat man die Aufgabe, einen Zahlenwert aus der Datenbank in einen Text umzuwandeln. Ein Beispiel dafür zeigt der Report für das Lagerprotokoll.
1.5 Berechnungen in einem Feld mit Formatierung
Wenn man in einem Feld etwas berechnet, wird das Ergebnis so ausgegeben, wie es die Berechnung ergibt. Wenn man z.B. mit zwei Fließkommazahlen rechnet, wird das Ergebnis auch mit allen resultierenden Nachkommstellen ausgegeben.
- Beispiel
- Im Rechnungsfuß wird der Skonto-Betrag und Skonto-Zahlungsbetrag errechnet und ausgegeben. Der Text im Feld lautet:
Bei Zahlung bis zum <b>[RechnungsFuss."Skonto1BisDatum"]</b> gewähren wir [RechnungsFuss."Skonto1Prozent"] % Skonto = [RechnungsFuss."Skonto1Betrag"]. Zahlungsbetrag mit Skonto: <b>[<RechnungsFuss."GesamtBetragBrutto"> - <RechnungsFuss."Skonto1Betrag">]</b>
- Das Ergebnis sieht so aus:
- Damit die Ergebnisse formatiert werden, kann man die eingebaute Funktion
FormatFloat( 'Format',Zahl )
verwenden. Diese formatiert die Zahl anhand der Vorgaben im Text Format.
- Die Formel dazu sieht nun so aus:
Bei Zahlung bis zum <b>[RechnungsFuss."Skonto1BisDatum"]</b> gewähren wir [RechnungsFuss."Skonto1Prozent"] % Skonto = [FormatFloat('#,##0.00 €',<RechnungsFuss."Skonto1Betrag">)]. Zahlungsbetrag mit Skonto: <b>[FormatFloat('#,##0.00 €', <RechnungsFuss."GesamtBetragBrutto"> - <RechnungsFuss."Skonto1Betrag"> )]</b>
- Das Ergebnis:
- Die Ausdrücke der Formel im Einzelnen
Bei Zahlung bis zum <b>[RechnungsFuss."Skonto1BisDatum"]</b> gewähren wir [RechnungsFuss."Skonto1Prozent"] % Skonto
- Es sind Verweise auf Datenbankfelder in der Formel enthalten, die mit eckigen Klammern eingefügt werden. Eigentlich müsste es nach den Regeln von oben so heißen:
Bei Zahlung bis zum <b>[<RechnungsFuss."Skonto1BisDatum">]</b> gewähren wir [<RechnungsFuss."Skonto1Prozent">] % Skonto
Das ist auch zulässig. FastReport erlaubt es jedoch, die spitzen Klammern wegzulassen, wenn der Ausdruck nur eine Variable oder nur ein Datenbank-Feld beinhaltet!
- Die Formatierung
% Skonto = [FormatFloat('#,##0.00 €',<RechnungsFuss."Skonto1Betrag">)].
Mit
[...]
wird der "Ausdruck" (also die Formel in der Formel) begrenzt. Innerhalb des Ausdrucks befindet sich die Funktion FormatFloat
. Dieser wird zuerst die gewünschte Formatierung übergeben '#,##0.00 €'
und nach dem Komma der Wert, der zu formatieren ist:
<RechnungsFuss."Skonto1Betrag">
Bei der Berechnung...
Zahlungsbetrag mit Skonto: <b>[FormatFloat('#,##0.00 €', <RechnungsFuss."GesamtBetragBrutto"> - <RechnungsFuss."Skonto1Betrag"> )]</b>
ist das genau das Gleiche, nur dass halt zwei Datenbankfelder verrechnet werden!
- Hinweis
- Leider unterstützt
FormatFloat
die universelle Währungsangaben%2.2m
nicht. Man muss das Währungssymbol also fest angeben. Wenn die Währung in Ihrem Land nicht der EURO ist, müssten Sie den Report an dieser Stelle entsprechend anpassen.
- Unterdrücken, wenn kein Skonto
- Mit diesem, Code kann man das Feld unterdrücken, wenn kein Skonto angegeben wurde:
procedure RechnungsFussSkonto1BisDatumOnBeforePrint(Sender: TfrxComponent); begin if <RechnungsFuss."Skonto1Betrag"> = 0 then RechnungsFussSkonto1BisDatum.Visible := False; end;
1.6 Datumsfeld unterdrücken, wenn kein Datum drin steht
Wenn man ein Datumsfeld im Report hat, steht dort je nach Formatierung "0" oder "30.12.1899" drin, wenn es gar kein Datum gibt. Behelfen könnte man sich, indem man das Feld im Code OnBeforePrint unterdrückt, wenn kein Datum drin steht. Einfacher ist es aber, auf dem Feld mit der rechten Maustaste zu klicken und die Option Nullen verbergen einzuschalten!
Wenn man einen Rahmen um das Feld angegeben hat, weil man die Daten tabellarisch anzeigen möchte, so fehlt in diesem Fall das Feld und auch der Rahmen. Um diese "Zahnlücke" zu füllen, kann man ein leeres Textfeld über oder unter das Datumsfeld setzen, das genauso groß ist und die Lücke füllt, falls das Datumsfeld ausgeblendet wird.
1.7 Hyperlinks in Feldern
Mit FastReport kann man hinter jedem Feld (Objekt) einen Hyperlink hinterlegen. Beim Klick auf den Link z.B. in einer exportierten PDF-Datei öffnet sich dann der Browser mit diesem Link.
Einzelheiten werden unter FastReport Hyperlinks in Feldern beschrieben.
1.8 Nur die ersten X Stellen eines Feldes verwenden
Wenn man nur die ersten X Stellen eines Feldes drucken oder untersuchen will, kann man dazu die eingebaute Funktion copy( <Feld>, Von-Stelle , Anzahl-Zeichen ) verwenden.
Beispiel:
Anzeige der ersten 4 Stellen einer Inventarnummer:
[ Copy( <Einzelartikel."InventarNr"> , 1 , 4 ) ]
Feld in Fett darstellen wenn es mit "1234" beginnt:
procedure MasterData1OnBeforePrint(Sender: TfrxComponent); begin if copy( <Einzelartikel."InventarNr"> ,1 ,4 ) = '1234' then MemoInvNr4.Font.Style := fsBold else MemoInvNr4.Font.Style := 0; end;