Crystal Reports Formeln für die Unterdrückung von Objekten oder Bereichen: Unterschied zwischen den Versionen

Aus GEVITAS
Wechseln zu: Navigation, Suche
(Die Seite wurde neu angelegt: „== Allgemeines == In CrystalReports kann man Formeln dazu verwenden, Objekte (wie Felder) oder Bereiche (wie den Detailbereich) un…“)
 
Zeile 20: Zeile 20:
  
 
[[Datei:CrystalReport_Bsp_Seitenkopf_Rabatt_PopUp.jpg]]
 
[[Datei:CrystalReport_Bsp_Seitenkopf_Rabatt_PopUp.jpg]]
 +
 +
Im Format-Editor gibt es die Option '''Unterdrücken''':
 +
 +
[[Datei: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 <code>X+2</code> 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 <code>MAUFKO.AUFTRNR=XXXX</code> 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;
 +
 +
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-Prozenzfelder 0 ist.
 +
 +
 +
 +
Sum ({maufpo.RABATTPRO}, {maufpo.POSNR})=0
 +
or
 +
isnull(Sum ({maufpo.RABATTPRO}, {maufpo.POSNR}))
 +
 +
  
  
 
=== Lösung für das Datenbankfeld im Detailbereich ===
 
=== Lösung für das Datenbankfeld im Detailbereich ===

Version vom 10. Februar 2013, 00:28 Uhr

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;

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-Prozenzfelder 0 ist.


Sum ({maufpo.RABATTPRO}, {maufpo.POSNR})=0
or
isnull(Sum ({maufpo.RABATTPRO}, {maufpo.POSNR}))



2.3 Lösung für das Datenbankfeld im Detailbereich