FastReport: Steuerung des Report mit Auftragskennzeichen

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Oftmals will man von einem Angebot, Auftrag usw. verschiedene Varianten beim Ausdruck haben, z.B. einmal mit Logo (E-Mail) und mal ohne (Ausdruck, Fax).

Dazu hat man im Prinzip drei Möglichkeiten:

MÖGLICHKEIT VOR-/NACHTEILE
Verschiedene Formulare/Reports anlegen. Auf den ersten Blick eine verlockend einfache Methode: Man legt einfach verschiedenen Formulardateien mit FastReport an, und die Benutzer wählen im Druckdialog-Fenster die gewünschte Variante an.

Allerdings ergeben sich auf diese Art und Weise mit der Zeit viele, viele Dateien, die alle gepflegt werden müssen! Wehe, es ändert sich was, oder das Ursprungsformular hat einen Fehler, der erst später auftaucht!

Parameterfeld im Report unterbringen Hier fügt man ein Parameterfeld in den Report ein. Beim Ausführen des Reports (z.B. bei der Vorschau, beim Drucken usw.) wird der/die Benutzer/in nach der gewünschten Variante gefragt.

Genau darin liegt aber das Problem: Dadurch, dass man bei jedem Ausführen, bei jeder Vorschau usw. neu gefragt wird, wird das mit der Zeit lästig.

Steuerung über Auftragskennzeichen Diese Methode ist die empfehlenswerteste: In der Datenbank gibt es bestimmte Felder, die für die Steuerung des Formulars zuständig sind. Das Formular ändert sich, je nach Werten in diesen Feldern.

Der/Die Anwender/in kann das einmal auswählen, die Auswahl wird in der Datenbank bei dem Auftrag gespeichert und muss nicht mehr bestätigt werden.

2 Was sind Auftragskennzeichen?

In der Datenbank gibt es bestimmte Felder, die für die Steuerung des Formulars zuständig sind. Jeder Auftrag hat diese Felder. Sie liegen in der Auftragskopf-Tabelle und heißen <AuftragsKopf."KENNZ1"> bis <AuftragsKopf."KENNZ12">.

Da der Anwender mit den Namen so nichts anfangen kann, hat man die Möglichkeit, die Kennzeichenfelder mit einem Titel zu versehen, den der Anwender sieht und versteht. Beispiel:

Auftragskennzeichen

In diesem Beispiel hat das Feld KENNZ1 den Titel "Druck Logo", KENNZ2 heisst "Druck Einz.preise" usw.

Damit die Eingabe einfacher wird, kann man sog. Auswahl-Listen festlegen, aus denen die Benutzer(innen) auswählen können. Also beispielsweise "Ja" oder "Nein".

Das Formular ändert sich, je nach den Werten in diesen Feldern. Dazu muss das Formular natürlich so "programmiert" werden, dass es auf die Kennzeichenfelder reagiert!

Die Auswahl wird in der Datenbank bei jedem Auftrag gespeichert und muss später nicht mehr bestätigt werden.

3 Festlegen/Definieren der Auftragskennzeichen

Die erste Aufgabe besteht darin, sich ein Schema für die Kennzeichen auszudenken, das zu den gewünschten Varianten des Ausdrucks passt. Dieses Schema wird dann mit der Festlegung der Auftragskennzeichen und der Anpassung des Formulares mit FastReport umgesetzt.

Sie können die Auftragskennzeichen in REFLEX mit "Datei-->Admin-Optionen->Programmparameter und Einstellungen" eingeben oder verändern.

Das Eingabefenster:

FastReport Auftragskennzeichen festlegen.png


3.1 Spalte "Bezeichnung"

Geben Sie hier die Bezeichnung an, die dem/der Anwender/in angezeigt werden soll. Halten Sie sich möglichst kurz, weil der Platz in der Eingabemaske (je nach Schriftart!) begrenzt ist! Hinweis: Änderungen wirken erst nach dem Programm-Neustart aus!

3.2 Spalte "Eingabemaske"

Geben Sie optional eine Eingabemaske an. Mit Hilfe der Feld-Eingabemasken können Sie festlegen, welche Zeichen und Formate in bestimmten Feldern gültig sind. Versucht der Benutzer, ein ungültiges Zeichen einzugeben, wird dieses nicht angenommen. Einzelheiten dazu am Ende dieses Dokumentes.

3.3 Spalte "Auswahlmöglichkeiten"

Geben Sie hier die Auswahlmöglichkeiten an, die in dem ausklappbaren Feld in der Auftragsmaske erscheinen sollen. Trennen Sie mehrere Auswahlmöglichkeiten mit dem ";"-Zeichen (Semikolon).


3.4 Spalte "Standard"

Hier kann man optional den Standard-Wert für das Kennzeichen festlegen. Dies wirs beim Anlegen eines neuen Kunden/Auftrags eingetragen, wenn vorhanden! (Ab Version 12.0.160629)

4 Anwendung der Auftragskennzeichen im Formular

Nachdem die Auftragskennzeichen festgelegt wurden, kann man die Reports darauf anpassen.

An einem Beispiel-Formular wollen wir die Anwendung der Auftragskennzeichen demonstrieren. Dieses Logo eines Angebots soll ein-/ausgeschaltet werden:

Beispiel

Das Logo liegt als Grafikdatei im Seitenkopf BasisSeitenkopf. Also klickt man zuerst im Band BasisSeitenkopf auf das Logo Picture1 und öffnet im Objektinspektor das Ereignis OnBeforePrint mit einem Doppelklick darauf und gibt diesen Code ein:

 if <AuftragsKopf."KENNZ2"> = 'Nein' then
      Picture1.Visible := False
 else
      Picture1.Visible := True;
Im Klartext heißt das
Unterdrücke das Bild "Picture1", wenn im Feld KENNZ2 das Wort "Nein" steht.

Also:

  • Benutzer/in wählt in REFLEX: "Logo drucken: Nein":
  • Bereich mit dem Logo wird unterdrückt.
  • Benutzer/in wählt in REFLEX: "Logo drucken: Ja" oder keine Auswahl:
  • Bereich mit dem Logo wird nicht unterdrückt, also gedruckt.

Speichern Sie den Report und probieren Sie es aus!

5 Masken für die Eingabe der Auswahlfelder

Eine Maske gibt bestimmte Eingabeformat vor. Sie besteht aus drei Feldern, die durch Semikolons voneinander getrennt sind.

  • Das erste Feld ist die Maske selbst.
  • Das zweite Feld besteht aus einem Zeichen und bestimmt, ob die literalen Zeichen der Maske mit den Daten gespeichert werden.
  • Das dritte Feld legt das Zeichen fest, das für noch nicht eingegebene Zeichen angezeigt wird.

5.1 Speziellen Zeichen im ersten Feld der Maske verwendet

Zeichen Bedeutung in der Maske
! Das Zeichen ! gibt in einer Maske an, dass optionale Zeichen als führende Leerzeichen dargestellt werden. Ist kein !-Zeichen vorhanden, werden optionale Zeichen im EditText-Objekt als abschließende Leerzeichen dargestellt.
> Wird das Zeichen > in einer Maske angegeben, werden alle nachfolgenden Zeichen in Großbuchstaben umgewandelt, bis das Ende der Maske erreicht ist oder das Zeichen < angetroffen wird.
< Wird das Zeichen < in einer Maske angegeben, werden alle nachfolgenden Zeichen in Kleinbuchstaben umgewandelt, bis das Ende der Maske erreicht ist oder das Zeichen > angetroffen wird.
<> Werden diese beiden Zeichen zusammen verwendet, findet keine Überprüfung der Groß-/Kleinschreibung statt. Die Daten werden in der Schreibweise formatiert, in der sie vom Benutzer eingegeben werden.
\ Nach dem Zeichen \ folgt ein literales Zeichen. Mit seiner Hilfe können die speziellen Maskenzeichen als Literale in den Daten angegeben werden.
L An dieser Stelle muss ein Buchstabe (A-Z, a-z) eingegeben werden.
l An dieser Stelle ist ausschließlich ein Buchstabe erlaubt. Eine Eingabe ist jedoch nicht erforderlich.
A An dieser Stelle muss ein alphanumerisches Zeichen (A-Z, a-z, 0-9) eingegeben werden.
a An dieser Stelle ist ausschließlich ein alphanumerisches Zeichen erlaubt. Eine Eingabe ist jedoch nicht erforderlich.
C An dieser Stelle muss ein beliebiges Zeichen eingegeben werden.
c An dieser Stelle kann ein beliebiges Zeichen eingegeben werden. Eine Eingabe ist jedoch nicht erforderlich.
0 An dieser Stelle muss ein numerisches Zeichen eingegeben werden.
9 An dieser Stelle darf ausschließlich ein numerisches Zeichen angegeben werden. Eine Eingabe ist jedoch nicht erforderlich.
# An dieser Stelle darf ausschließlich ein numerisches Zeichen oder ein Plus- bzw. Minuszeichen eingegeben werden. Eine Eingabe ist jedoch nicht erforderlich.
: Das Zeichen : wird verwendet, um in Zeitangaben Stunden, Minuten und Sekunden zu trennen. Ist unter Ländereinstellungen in der Systemsteuerung ein anderes Trennzeichen eingestellt, wird dieses statt dessen verwendet.
/ Mit dem Zeichen / werden in einer Datumsangabe der Monat, der Tag und das Jahr voneinander getrennt. Ist unter Ländereinstellungen in der Systemsteuerung ein anderes Trennzeichen eingestellt, wird dieses statt dessen verwendet.
; Das Zeichen ; wird verwendet, um die drei Felder der Maske voneinander zu trennen.
_ Das Zeichen _ fügt automatisch Leerzeichen in den Text ein. Bei der Eingabe in das Feld werden diese Zeichen vom Cursor übersprungen.

Alle nicht in der Tabelle aufgeführten Zeichen können im ersten Feld der Maske als literale Zeichen angegeben werden. Literale Zeichen werden automatisch eingefügt und vom Cursor beim Bearbeiten übersprungen. Die speziellen Maskenzeichen können auch als Literale angegeben werden, sofern ihnen das Zeichen \ vorangestellt wird.


5.2 Zeichen im zweiten Feld der Maske

Es gibt an, ob die in der Maske enthaltenen literalen Zeichen zusammen mit dem Text des Eingabefeldes gespeichert werden. So kann beispielsweise die Maske für eine Telefonnummer mit Vorwahl folgendermaßen angegeben werden:

  • (00000)_0000000;0;*

Der Wert 0 im zweiten Feld gibt an, dass die Eigenschaft Text des Steuerelements aus den 10 einzugebenden Ziffern besteht und nicht aus den 14 Zeichen, aus denen sich die Nummer im Eingabefeld zusammensetzt.

Eine 0 im zweiten Feld legt fest, dass Literale nicht gespeichert werden. Bei jedem anderen Zeichen werden sie als Teil des Textes behandelt.

5.3 Das dritte Feld der Maske

Es enthält das Zeichen, das im Eingabefeld für Leerstellen (nicht eingegebene Zeichen) angezeigt wird. In der Voreinstellung entspricht es dem für literale Leerzeichen verwendeten Zeichen. Beide Zeichen werden im Eingabefenster identisch angezeigt. Gibt der Benutzer jedoch Informationen in das Feld ein, werden die Leerstellen der Reihe nach ausgewählt, während die Leerzeichen übersprungen werden.


6 Links