Crystal Reports Formeln für die Unterdrückung von Objekten oder Bereichen

Aus GEVITAS
Wechseln zu: Navigation, Suche

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. %":

CrystalReport Bsp Seitenkopf Rabatt.jpg

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:

CrystalReport Bsp Seitenkopf Rabatt PopUp.jpg

Im Format-Editor gibt es die Option Unterdrücken:

CrystalReport Bsp Seitenkopf Rabatt FormatEditor.jpg

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:

CrystalReport Bsp Seitenkopf Rabatt FormatEditor.jpg

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:

CrystalReport Bsp Seitenkopf Rabatt Unterdruecken.jpg