CrystalReports: Mengenfeld mit oder ohne Nachkommastellen: Unterschied zwischen den Versionen
K (→Dezimalstellen) |
K (→Dezimalstellen) |
||
(Eine dazwischenliegende Version desselben Benutzers wird nicht angezeigt) | |||
Zeile 24: | Zeile 24: | ||
// Wenn die Menge Nachkommastellen enthält, mit 2 NK drucken, sonst ohne: | // Wenn die Menge Nachkommastellen enthält, mit 2 NK drucken, sonst ohne: | ||
− | if { | + | if {RechPo.AuftrMenge} - Int({RechPo.AuftrMenge}) > 0 then |
2 | 2 | ||
else | else | ||
Zeile 32: | Zeile 32: | ||
*'''"// Wenn die Menge..."''' | *'''"// Wenn die Menge..."''' | ||
− | :Das ist ein Kommentar, der Aufgabe der Formel beschreibt. | + | :Das ist ein Kommentar, der Aufgabe der Formel beschreibt. Kommentare sind wichtig und sollten bei keiner Formel fehlen! |
− | *'''"if { | + | *'''"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! | :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! | ||
Zeile 40: | Zeile 40: | ||
: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. | :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. | ||
=== Runden === | === Runden === |
Aktuelle Version vom 8. Mai 2014, 09:40 Uhr
Inhaltsverzeichnis
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:
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...
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.