Crystal Reports Formeln für die Unterdrückung von Objekten oder Bereichen
Inhaltsverzeichnis
1 Allgemeines
In CrystalReports kann man Formeln dazu verwenden, Objekte (wie Felder) oder Bereiche (wie den Detailbereich) unter bestimmten Umständen zu unterdrücken.
Dazu muss die Formel das Ergebnis (den Wert) Wahr (True) oder Falsch (False) zurückliefern.
2 Beispiel
2.1 Forderung
In einem Angebots-/Auftragsformular befindet sich sich die Überschrift für die Positionen. Darin gibt es ein Textfeld "Rab. %":
Es wäre nun schön, wenn dieser Text unterdrückt werden würde, wenn es in dem Auftrag gar keinen Rabatt gibt! Auch das Datenbankfeld Rabatt Prozent (MAUFPO.RABATTPRO) sollte nicht ausgegeben werden, wenn 0 drin steht!
2.2 Lösung für die Überschrift
Klicken Sie mit der rechten Maustaste auf das Textfeld und wählen:
Im Format-Editor gibt es die Option Unterdrücken:
Wenn man die Option auswählt (ein Häkchen setzt), wird das Feld komplett unterdrückt! Das hilft uns in diesem Fall nicht weiter: Wir wollen das Feld ja nur dann unterdrücken, wenn es keinen Rabatt im Auftrag gibt! Also lassen wir das Häkchen weg und klicken auf die Schaltfläche X+2
rechts. Dann können wir eine Formel eingebe, die das Feld nur unter bestimmten Umständen unterdrückt.
Die Formel muss im Prinzip nach dem Schema funktionieren:
Unterdrücke das Feld, wenn es keinen Rabatt im Auftrag gibt!
Das heißt, die Formel muss den Wert Wahr (True) zurückliefern, wenn es keinen Rabatt im Auftrag gibt. Dazu benutzt man die eingebaute Funktion sum. Diese berechnet die Summe eines Datenbankfeldes unter Berücksichtigung der Auswahlformel, in unserem Fall also die Summe des Rabattfeldes eines bestimmten Auftrags.
- Beim Ausführen des Reports schickt REFLEX bzw. GEVAS-Professional die Auswahlformel
MAUFKO.AUFTRNR=XXXX
an den Report! Somit werden alle Tabellen nach dem Feld Auftragsnummer (MAUFKO.AUFTRNR) gefiltert.
Umgesetzt auf die Crystal-Syntax der Formel hieße das:
if Sum ({maufpo.RABATTPRO}, {maufpo.POSNR})=0 then true else false;
Wenn die Summe der Rabattfelder 0 ergibt, dann liefere Wahr (True) zurück, ansonsten (else) liefere Falsch (False) zurück.
Das funktioniert auch soweit. Allerdings hat Crystal für schreibfaule Menschen eine Kurzform dieser Formel eingebaut. Damit ist es möglich, das if, else und true bzw. false einfach wegzulassen! Die Kurzform der Formel lautet:
Sum ({maufpo.RABATTPRO}, {maufpo.POSNR})=0
Die Formel liefert also wahr (true) zurück, wenn die Summe der Rabatt-Prozentfelder 0 ist. Wenn nicht, wird Falsch (False) zurückgeliefert.
Gehen wir zurück zum Format-Editor. Dort haben wir über die Schaltfläche X+2
festgelegt, dass das Feld unter bestimmten Umständen unterdrückt werden soll:
Unsere Formel sorgt nun dafür, dass diese Unterdrückung nur statt findet, wenn es keinen Rabatt im Auftrag gibt.
Hinweis:
Datenbanken unterscheiden darin, ob in Datenbankfeldern Nullen stehen oder gar nichts! Eine 0 in einem Datenbankfeld ist ein Wert, auch wenn er 0 ist, nichts in dem Datenbankfeld ist jedoch nicht 0! Deshalb ist es sicherer, die Formel auf den Fall vorzubereiten, dass im Rabattfeld nichts steht. Die endgültige Formel lautet deshalb:
Sum ({maufpo.RABATTPRO}, {maufpo.POSNR})=0 or isnull(Sum ({maufpo.RABATTPRO}, {maufpo.POSNR}))
Entweder sie Summe der Rabatt ist 0 oder es gibt gar keinen Eintrag im Rabattfeld.
2.3 Lösung für das Datenbankfeld im Detailbereich
Diese Lösung ist einfacher! Klicken Sie mit der rechten Maustaste auf das Feld und wählen: