CrystalReports: Mengenfeld mit oder ohne Nachkommastellen

Aus GEVITAS
Wechseln zu: Navigation, Suche

1 Allgemeines

Das Mengenfeld (z.B. in einer Rechnung) wird normalerweise mit einer fest eingestellten Anzahl von Nachkommastellen (Dezimalstellen) gedruckt. Wenn man z.B. niemals gebrochene Zahlen fakturiert sondern nur ganzzahlige Mengen hat, wird man im Formular (im Report) die Formatierung so einstellen, dass keine Dezimalstellen ausgegeben werden. Hat man nun aber ausnahmsweise doch mal Dezimalstellen in der Menge, werden diese im Formular aufgerundet und ohne Nachkommastellen ausgegeben. Dieser Artikel beschreibt, wie man das Mengenfeld in CrystalReports dynamisch formatieren kann.

2 Feste Formatierung des Mengenfeldes

Normalerweise wird das Mengenfeld in CrystalReports fest formatiert:

CrystalReports Bsp Mengenfeld FesteFormatierung.png

In diesem Fall werden keine Dezimalstellen ausgegeben!

  • Diesen Dialog öffnet man mit der rechten Maustaste über dem Feld --> Feld Formatieren-->Anpassen.

3 Dynamische Formatierung des Mengenfeldes

3.1 Dezimalstellen

Man kann die Dezimalstellen auch über Formeln steuern. Das bedeutet, dass die fest vorgegebene Formatierung nicht verwendet wird, sondern anhand einer Formel-Abfrage bestimmt wird, ob bzw. wieviel Dezimalstellen ausgegeben werden sollen. Dazu klickt man im Formatierungsdialog auf die Schaltfläche neben der Dezimal-Angabe...

CrystalReports Bsp Mengenfeld Formel Btn.png

und gibt folgende Formel ein:

// Wenn die Menge Nachkommastellen enthält, mit 2 NK drucken, sonst ohne:
if {RechPo.AuftrMenge} - Int({RechPo.AuftrMenge}) > 0 then
   2
else
   0;
Erklärung
  • "// Wenn die Menge..."
Das ist ein Kommentar, der Aufgabe der Formel beschreibt. Kommentare sind wichtig und sollten bei keiner Formel fehlen!
  • "if {RechPo.AuftrMenge} - Int({RechPo.AuftrMenge}) > 0 then":
Diese Zeile entscheidet darüber, ob Dezimalstellen ausgegeben werden sollen oder nicht. Die CrystalReports-Funktion Int(xxx) (von "Integer" = Ganze Zahl) wandelt eine Zahl mit Nachkommastellen in eine Zahl ohne Nachkommastellen um. Aus 1,75 wird also 1, aus 2 wird 2 usw. Wenn man nun von einer Zahl den ganzzahligen Wert abzieht (z.B. 1,75 - 1) und erhält einen Rest (z.B. 0,75) weiß man, dass die Zahl Dezimalstellen enthält!
Wenn die Abfrage einen Wert größer als 0 ergibt, gibt die Formel das Ergebnis 2 zurück, also 2 Dezimalstellen sollen für die Formatierung der Zahl verwendet werden.
Ergibt die Abfrage oben 0, gibt die Formel das Ergebnis 0 zurück, also keine Dezimalstellen sollen für die Formatierung der Zahl verwendet werden.
Hinweise
  • Wenn man das für ein Auftrags-Formular machen will, heißt das Feld
   {MAufPo.AuftrMenge}
  • Wenn Ihre Datenbank mit dem mySQL©-Server arbeitet, müssen die Feldnamen u.U. in Kleinbuchstaben angeben.
  • Wenn Ihre Datenbank mit dem ORACLE© arbeitet, müssen die Feldnamen u.U. in Großbuchstaben angeben.
  • Wenn Ihre Datenbank mit dem Microsoft-SQL-Server© arbeitet, ist die Schreibweise egal.

3.2 Runden

Die gleiche Formel wie oben muss man auch für das Runden der Zahl einsetzen.

4 Links