FastReport Tipps und Tricks: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Manueller Seitenwechsel im Code)
(Formatierung)
 
(194 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt)
Zeile 1: Zeile 1:
== Allgemeines ==
+
Hier gibt es Tipps und Tricks für das Erstellen von Reports mit '''FastReport©''', die im Alltag hilfreich sein können. Sie sind aus der Praxis entstanden. Im Laufe der Erfahrung mit '''FastReport©''' haben sich einige Themen angesammelt, so dass die Tipps und Tricks auf mehrere Seiten aufgeteilt wurden:
  
Dieser Artikel beschreibt kleine Tipps und Tricks für das Erstellen von Reports mit '''FastReport''', die im Alltag hilfreich sein können.
 
  
=== Anzahl der Datensätze ===
+
== Eingebaute Funktionen und Variablen ==
  
Manchmal hat man das Problem, dass bestimmte Bereiche unterdrückt werden sollen, wenn es nur einen einzigen Datensatz gibt. Beispielsweise hat man ein Mahnungsformular mit der Tabelle der fälligen Rechnungen und darunter die Gesamtsumme. Die Gesamtsumme soll aber unterdrückt werden, wenn es nur '''eine''' angemahnte Rechnung in der Tabelle gibt. Dann kann im Objektinspektor des Bereich auf das Ereignis
+
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Anzahl der Datensätze|Anzahl der Datensätze]]
 +
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Anzahl Datensätze vergleichen mit aktuellem Datensatz Anzahl|Datensätze vergleichen mit aktuellem Datensatz]]
 +
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Interne Variablen|Interne Variablen]]
 +
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Kopie des Ausdrucks|Kopie des Ausdrucks]]
 +
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Report-Name|Report-Name]]
 +
* [[FastReport_Tipps_und_Tricks:_Eingebaute_Funktionen_und_Variablen#Positionstext_ohne_RFT-Formatierung|Positionstext ohne RFT-Formatierung]]
 +
* [[FastReport_Tipps_und_Tricks:_Eingebaute_Funktionen_und_Variablen#Text-Teile_l.C3.B6schen_am_Beispiel_Pfadname_entfernen|Text-Teile löschen am Beispiel "Pfadname entfernen"]]
  
OnBeforePrint
+
* '''<big>[[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen|Zum kompletten Beitrag]]</big>'''
  
doppelklicken und diesen Code schreiben:
+
== Seiten-Ansteuerung ==
  
procedure Child2OnBeforePrint(Sender: TfrxComponent);
+
* [[FastReport Tipps und Tricks: Seiten-Ansteuerung#Manueller Seitenwechsel im Code|Manueller Seitenwechsel im Code]]
begin
+
* [[FastReport Tipps und Tricks: Seiten-Ansteuerung#Manueller Seitenwechsel "Nachher" im Code|Manueller Seitenwechsel "Nachher" im Code]]
    // Band mit der Gesamtsumme unterdrücken, wenn es nur EINE Rechnung gibt:
+
* [[FastReport Tipps und Tricks: Seiten-Ansteuerung#Report-Zusammenfassung am Ende der Seite|Report-Zusammenfassung am Ende der Seite]]
    if <Line#> = 1 then
+
* [[FastReport Tipps und Tricks: Seiten-Ansteuerung#Leerzeilen verhindern bei unterdrücktem Feld|Leerzeilen verhindern bei unterdrücktem Feld]]
        Child2.Visible := False
+
* [[FastReport Tipps und Tricks: Seiten-Ansteuerung#Aufteilung erlauben|Aufteilung erlauben]]
    else
 
        Child2.Visible := True;             
 
end;
 
  
Die System-Variable <Line#> beihaltet die Anzahl der Zeilen (Datensätze) des Detail-Bandes.
+
* '''<big>[[FastReport Tipps und Tricks: Seiten-Ansteuerung|Zum kompletten Beitrag]]</big>'''
  
=== 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. Das ist nicht schön, ist aber leider so.
+
== Bänder ==
  
Behelfen kann man sich, indem man das Feld unterdrückt, wenn kein Datum drin steht. Dazu kann im Objektinspektor des Bereich auf das Ereignis
+
* [[FastReport Tipps und Tricks: Bänder#Kapitel-Positionen zusammenhalten|Kapitel-Positionen zusammenhalten]]
 +
* [[FastReport Tipps und Tricks: Bänder#Band per Code unterdrücken|Band per Code unterdrücken]]
 +
* [[FastReport Tipps und Tricks: Bänder#Kapitel unterdrücken wenn alle Positionen ausgegeben sind|Kapitel unterdrücken wenn alle Positionen ausgegeben sind]]
 +
* [[FastReport Tipps und Tricks: Bänder#Positionen_unterdr.C3.BCcken_wenn_Kapitel_auf_.22Nicht_drucken.22_steht|Positionen unterdrücken wenn Kapitel auf "Nicht drucken" steht]]
 +
* [[FastReport Tipps und Tricks: Bänder#Band dehnen|Band dehnen]]
 +
* [[FastReport Tipps und Tricks: Child-Band wird nicht gedruckt|Child-Band wird nicht gedruckt]]
 +
* [[FastReport_Tipps_und_Tricks:_B%C3%A4nder#Saubere_Linien_um_B.C3.A4nder.2C_auch_wenn_Child-Band_unterdr.C3.BCckt_wird|Saubere Linien trotz unterdrücktem Child-Band]]
 +
* [[FastReport_Tipps_und_Tricks: B%C3%A4nder#Details-Band_wird_nicht_gedruckt_wenn_SubdetailData_leer|Detail-Band wird nicht gedruckt wenn Subdetail-Band leer]]
 +
* [[FastReport_Tipps_und_Tricks:_B%C3%A4nder#Warum_die_Sub-Details_ganz_unten_stehen|Warum die Sub-Details ganz unten stehen]]
 +
* [[FastReport_Tipps_und_Tricks:_B%C3%A4nder#Band_unterdr.C3.BCcken_wenn_nicht_Anfrage.2FAngebot|Band unterdrücken, wenn nicht Anfrage oder Angebot]]
 +
* [[FastReport_Tipps_und_Tricks:_B%C3%A4nder#Kapitel-Zwischensumme_nicht_drucken.2C_wenn_es_nur_EIN_Kapitel_im_Auftrag_gibt|Kapitel-Zwischensumme unterdrücken, wenn es nur EIN Kapitel im Auftrag gibt]]
  
OnBeforePrint
+
* '''<big>[[FastReport Tipps und Tricks: Bänder|Zum kompletten Beitrag]]</big>'''
  
doppelklicken und diesen Code schreiben:
+
== Formatierung ==
  
procedure MahnungslisteDatumLetzteMahnungOnBeforePrint(Sender: TfrxComponent);
+
* [[FastReport Tipps und Tricks: Formatierung#Schrift-Farbe von Felder abhängig von der Fremdmenge|Schrift-Farbe von Felder abhängig von der Fremdmenge]]
begin
+
* [[FastReport Tipps und Tricks: Formatierung#Schrift-Farbe_abh.C3.A4ngig_vom_Alternativ-Kennzeichen|Schrift-Farbe abhängig vom Alternativ-Kennzeichen]]
  // Unterdrücken wenn 0-Datum:
+
* [[FastReport Tipps und Tricks: Formatierung#Farbe eines Bandes abwechselnd grau/weiß|Farbe eines Bandes abwechselnd grau/weiß]]
  if <Mahnungen."DatumLetzteMahnung"> < 2 then
+
* [[FastReport Tipps und Tricks: Formatierung#Gruppenkopf auf letzter Seite unterdrücken, wenn keine Daten mehr kommen|Gruppenkopf auf letzter Seite unterdrücken, wenn keine Daten mehr kommen]]
    MahnungslisteDatumLetzteMahnung.Visible := False
+
* [[FastReport Tipps und Tricks: Formatierung#Report mit Sub-Detail-Band wird abgebrochen, wenn es keine Sub-Daten gibt|Report mit Sub-Detail-Band wird abgebrochen, wenn es keine Sub-Daten gibt]]
  else
+
* [[FastReport Tipps und Tricks: Formatierung#Unterschiedliche Schriftarten in Auftrags-/Rechnungspositions-Texten|Unterschiedliche Schriftarten in Auftrags-/Rechnungspositions-Texten]]
    MahnungslisteDatumLetzteMahnung.Visible := True;         
+
* [[FastReport Tipps und Tricks: Formatierung#Rahmen per Code setzen|Rahmen per Code setzen]]
end;
+
* [[FastReport Tipps und Tricks: Formatierung#Positionsangaben im Code|Positionsangaben im Code]]
 +
* [[FastReport Tipps und Tricks: Formatierung#Top-Position im Code ändern|Top-Position im Code ändern]]
 +
* [[FastReport Tipps und Tricks: Formatierung#Zahlen und Datum formatieren|Zahlen und Datum formatieren]]
 +
* [[FastReport Tipps und Tricks: Formatierung#Monats-Namen aus Monats-Zahl|Monats-Namen aus Monats-Zahl]]
 +
* [[FastReport Tipps und Tricks: Formatierung#Text in Großbuchstaben|Text in Großbuchstaben]]
 +
* [[FastReport_Tipps_und_Tricks:_Formatierung#Schriftattribute_.28Fett.2C_unterstreichen_.29_in_Feldern|Schriftattribute in Feldern]]
  
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.
+
* '''<big>[[FastReport Tipps und Tricks: Formatierung|Zum kompletten Beitrag]]</big>'''
  
;Nachtrag:
+
== Variablen ==
:Dazugelernt! Einfacher ist es auf dem Feld mit der rechten Maustaste zu klicken und die Option '''Nullen verbergen''' einzuschalten! Das Beispiel oben haben wir trotzdem gelassen, weil man die Logik ja auch für andere Zwecke verwenden kann.
 
  
=== Report-Zusammenfassung am Ende der Seite ===
+
* [[FastReport Tipps und Tricks: Variablen#Fortlaufende Nummer|Fortlaufende Nummer]]
 +
* [[FastReport Tipps und Tricks: Variablen#Zähler-Variable zum Unterdrücken von wiederholten Werten|Zähler-Variable zum Unterdrücken von wiederholten Werten]]
 +
* [[FastReport Tipps und Tricks: Eingebaute Funktionen und Variablen#Interne Variablen|Interne Variablen]]
 +
* [[FastReport Tipps und Tricks: Variablen#Variablen_im_Code_mit_Inhalten_f.C3.BCllen|Variablen im Code mit Inhalten füllen]]
  
Wenn man die Report-Zusammenfassung (Report Summary) am Ende der Seite drucken will, muss man im Ereignis '''ReportSummary1OnBeforePrint''' diesen Code einfügen:
 
  
 +
* '''<big>[[FastReport Tipps und Tricks: Variablen|Zum kompletten Beitrag]]</big>'''
  
procedure ReportSummary1OnBeforePrint(Sender: TfrxComponent);
+
== Verwendung von Feldern ==
begin
 
  Engine.CurY := Engine.CurY + Engine.FreeSpace - ReportSummary1.Height - 1; 
 
end;
 
  
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Zeilenumbruch innerhalb von Feldern|Zeilenumbruch innerhalb von Feldern]]
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Zeilenabstand in Feldern|Zeilenabstand in Feldern]]
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Berechnungen in einem Feld|Berechnungen in einem Feld]]
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Zahlenwert in Text umwandeln|Zahlenwert in Text umwandeln]]
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Berechnungen in einem Feld mit Formatierung|Berechnungen in einem Feld mit Formatierung]]
 +
* [[FastReport Tipps und Tricks: Verwendung von Feldern#Datumsfeld unterdrücken, wenn kein Datum drin steht|Datumsfeld unterdrücken, wenn kein Datum drin steht]]
 +
* [[FastReport Tipps und Tricks: Bilder zur Laufzeit laden|Bilder zur Laufzeit laden]]
 +
* [[FastReport_Tipps_und_Tricks:_Verwendung_von_Feldern#Hyperlinks_in_Feldern|Hyperlinks in Feldern]]
 +
* [[FastReport_Tipps_und_Tricks:_Verwendung_von_Feldern#Nur_die_ersten_X_Stellen_eines_Feldes_verwenden|Nur die ersten X Stellen eines Feldes verwenden]]
  
=== Manueller Seitenwechsel im Code ===
+
* '''<big>[[FastReport Tipps und Tricks: Verwendung von Feldern|Zum kompletten Beitrag]]</big>'''
  
Wenn man im Report einen manuellen Seitenwechsel anhand eines Kennzeichens erzeugen will, muss man im Ereignis '''OnBeforePrint''' des gewünschten Bandes diesen Code einfügen:
+
== Dialoge im Report ==
  
procedure GroupHeader1OnBeforePrint(Sender: TfrxComponent);
+
* [[FastReport Tipps und Tricks: Dialoge im Report#Ausführen des Reports per Kennzeichen verhindern|Ausführen des Reports per Kennzeichen verhindern]]
begin
 
  // Dieser Code wird ausgeführt, BEVOR das Positionen-Gruppenkopf-Band (die Kapitel-Überschrift) ausgegeben wird.
 
  // Wenn das Kennzeichen "Seitenwechsel Vorher" gesetzt ist:
 
  if <Positionen."Seitenwechsel_0Nein_1Vorher_2Nachher"> = 1 then
 
    Engine.NewPage;                                  // Neue Seite, Seitenkopf usw. drucken
 
end;
 
 
procedure DetailPositionenOnBeforePrint(Sender: TfrxComponent);
 
begin
 
  // Dieser Code wird ausgeführt, BEVOR das Positionen-Detail-Band ausgegeben wird.
 
  
  // Kapitel-Position ausblenden:
+
* '''<big>[[FastReport Tipps und Tricks: Dialoge im Report|Zum kompletten Beitrag]]</big>'''
  if <Positionen."PosNr"> = 0 then
 
  begin
 
    DetailPositionen.Visible := False;
 
  end
 
  else
 
    DetailPositionen.Visible := True;
 
 
  // Wenn das Kennzeichen "Seitenwechsel Vorher" gesetzt ist:
 
  if <Positionen."PosNr"> > 0 then                                  // NICHT bei Kapitel-Position, das wird da schon gemacht!
 
    if <Positionen."Seitenwechsel_0Nein_1Vorher_2Nachher"> = 1 then
 
      Engine.NewPage;                                                // Neue Seite, Seitenkopf usw. drucken
 
end;
 
  
=== Fehlermeldung "Alternativ nicht gefunden" in Rechnung ===
 
  
Wenn Sie einen als Auftragsformular erstellten Report kopieren und als Rechungsformular (-Grundlage) verwenden wollen, erhalten Sie eine Fehlermeldung wie diese:
 
  
[[Datei:FastReport_Rechnung_Fehlermeldung_Alternativ.png]]
+
== Sonstiges ==
  
Grund:
+
* [[FastReport Unterberichte]]
  
In Rechnungen gibt es kein Alternativ.
+
* [[If-Then-Else: Eine Einführung in die Programmierung]]
  
Lösung:
+
== Fehler ==
 +
 
 +
* [[FastReport Tipps und Tricks: Fehler#Tabelle wird im Report nicht angezeigt|Tabelle wird im Report nicht angezeigt]]
 +
* [[FastReport Tipps und Tricks: Fehler#Band wird nicht gedruckt, obwohl Daten vorhanden sind|Band wird nicht gedruckt, obwohl Daten vorhanden sind]]
 +
* [[FastReport Tipps und Tricks: Fehler#Detail-Band mit Auftragspositionen wird mehrfach gedruckt, obwohl nur ein Datensatz vorhanden ist|Detail-Band mit Auftragspositionen wird mehrfach gedruckt, obwohl nur ein Datensatz vorhanden ist]]
 +
* [[FastReport Tipps und Tricks: Fehler#Schrift-Farbe eines Feldes wird im Editor angezeigt, in der Vorschau/im Druck nicht|Schrift-Farbe eines Feldes wird im Editor angezeigt, in der Vorschau/im Druck nicht]]
 +
* [[FastReport Tipps und Tricks: Fehler#Anzahl Seitennummern ist 0|Anzahl Seitennummern ist 0]]
 +
* [[FastReport Tipps und Tricks: Fehler#Etikettenformular: Es wird immer nur ein Etikett gedruckt|Etikettenformular: Es wird immer nur ein Etikett gedruckt]]
 +
* [[FastReport Tipps und Tricks: Fehler#Ich kann die Sortierung beim Drucken einer Ladeliste nicht ändern!|Ich kann die Sortierung beim Drucken einer Ladeliste nicht ändern!]]
 +
* [[FastReport Tipps und Tricks: Fehler#Lieferschein wird übereinander gedruckt|Lieferschein wird übereinander gedruckt]]
 +
* [[FastReport Tipps und Tricks: Fehler#Prüfprotokoll wird nicht gedruckt|Prüfprotokoll wird nicht gedruckt]]
 +
* [[FastReport Tipps und Tricks: Fehler#Fehlermeldung "Alternativ nicht gefunden" in Rechnung|Fehlermeldung "Alternativ nicht gefunden" in Rechnung]]
 +
* [[FastReport Tipps und Tricks: Fehler#Fehlermeldung "Fehler im Ausdruck';' expected"|Fehlermeldung "Fehler im Ausdruck';' expected"]]
 +
* [[FastReport Tipps und Tricks: Fehler#Fehlermeldung "Memo XX: Fehler im Ausdruck xxxx"|Fehlermeldung "Memo XX: Fehler im Ausdruck xxxx"]]
 +
* [[FastReport_Tipps_und_Tricks:_Fehler#Fehlermeldung_unter_mySQL:_.22Variante_des_Typs_.28UnicodeString.29_konnte_nicht_in_Typ_.28Double.29_konvertiert_werden|Fehlermeldung: "Variante des Typs (UnicodeString) konnte nicht in Typ (Double) konvertiert werden]]
 +
* [[FastReport_Tipps_und_Tricks:_Fehler#Bei_der_Vorschau_h.C3.A4ngt_sich_das_Programm_an_manchen_Rechner_auf|Bei der Vorschau hängst sich das Programm auf]]
 +
 
 +
 
 +
* '''<big>[[FastReport Tipps und Tricks: Fehler|Zum kompletten Beitrag]]</big>'''
 +
 
 +
* Programm hängt sich scheinbar auf:
 +
:Bei Drucken in ein PDF-Programm (also als Drucker ist z.B. PDF-Writer) über die Vorschau hängst sich das Programm scheinbar auf.
 +
;Ursache:
 +
:Im PDF-Programm ist ein Dialog "Speichern unter" geöffnet. Dieses muss geschlossen werden!
 +
 
 +
== Export ==
 +
 
 +
* [[FastReport Tipps und Tricks: Export#Export PDF|Export PDF]]
 +
* [[FastReport Tipps und Tricks: Export#Exportierte PDF-Dateien sind sehr gross|Exportierte PDF-Dateien sind sehr gross]]
 +
* [[FastReport Tipps und Tricks: Export#Windows-Explorer mit dem Formular-Ordner öffnen|Windows-Explorer mit dem Formular-Ordner öffnen]] im Druck-Fenster
 +
 
 +
* '''<big>[[FastReport Tipps und Tricks: Export|Zum kompletten Beitrag]]</big>'''
  
Entfernen Sie mit dem Report-Designer alle Verweise auf das Alternativ-Feld!
 
  
  
Zeile 106: Zeile 136:
  
 
== Links ==
 
== Links ==
 +
 +
* [[Mehrsprachige Reports mit FastReport]]
 +
 +
* [[FastReport Fehlermeldungen]]
  
 
* [[FastReport Seitenformat]]
 
* [[FastReport Seitenformat]]
Zeile 118: Zeile 152:
  
 
* [[FastReport Farb-Konstanten]]
 
* [[FastReport Farb-Konstanten]]
 +
 +
* [[FastReport HTML-Tags in Texfeldern]]
  
 
* [[FastReport Namensgebung der Datenbank-Tabellen und -Felder]]
 
* [[FastReport Namensgebung der Datenbank-Tabellen und -Felder]]
  
 
* [[FastReport: Summen im Report bilden]]
 
* [[FastReport: Summen im Report bilden]]
 +
 +
* [[FastReport Engine: Der Report-Erzeuger]]
  
 
* [[Ladeliste/Packliste mit FastReport]]
 
* [[Ladeliste/Packliste mit FastReport]]
 +
 +
* [[FastReport Beispiel Auftragsformular Struktur der Positionen]]
  
 
* [//youtu.be/VDTSGf4oIFA Video FastReport Teil 1: Allgemeines]
 
* [//youtu.be/VDTSGf4oIFA Video FastReport Teil 1: Allgemeines]
Zeile 134: Zeile 174:
  
 
* [//youtu.be/5krqu5oSuGU Video FastReport Teil 10: Vererbung, Erstellen und Verwenden eines Basis-Reports]
 
* [//youtu.be/5krqu5oSuGU Video FastReport Teil 10: Vererbung, Erstellen und Verwenden eines Basis-Reports]
 +
 +
* [//youtu.be/KwOBk12rTNg Video FastReport Teil 16: Ladeliste nach Lagerort und Artikeln]
 +
 +
* [//youtu.be/tf2W3cML7Xg Video FastReport: Artikel-Report mit Bildern]
  
 
* [//www.fast-report.com/de/ Homepage von FastReport]
 
* [//www.fast-report.com/de/ Homepage von FastReport]

Aktuelle Version vom 5. Mai 2021, 12:23 Uhr

Hier gibt es Tipps und Tricks für das Erstellen von Reports mit FastReport©, die im Alltag hilfreich sein können. Sie sind aus der Praxis entstanden. Im Laufe der Erfahrung mit FastReport© haben sich einige Themen angesammelt, so dass die Tipps und Tricks auf mehrere Seiten aufgeteilt wurden:


1 Eingebaute Funktionen und Variablen

2 Seiten-Ansteuerung


3 Bänder

4 Formatierung

5 Variablen


6 Verwendung von Feldern

7 Dialoge im Report


8 Sonstiges

9 Fehler


  • Programm hängt sich scheinbar auf:
Bei Drucken in ein PDF-Programm (also als Drucker ist z.B. PDF-Writer) über die Vorschau hängst sich das Programm scheinbar auf.
Ursache
Im PDF-Programm ist ein Dialog "Speichern unter" geöffnet. Dieses muss geschlossen werden!

10 Export




11 Links