Hallo,
ich möchte in einer Abfrage die Funktion Nz (Überprüfung leere Zeichenfunktion) verwenden. Dies geht ja nur mit dem Typ Variant.
In der Abfrage werden Zeilensummen (in meinem Fall Subtraktion) gebildet. Die einzelnen Felder sind alle vom Typ "Währung" (Euro, 2 Nachkommastellen). Hier das Beispiel in der Abfrage:
offenePosten: Nz([VereinbarterPreis] - Nz([Zahlung1]) - Nz([Zahlung2])
Der Rückgabewert der Abfrage ist jedoch leider keine Währungsangabe mehr sondern einfach nur eine Zahl.
Gibt es die Möglichkeit über SQL den Rückgabewert in eine Währung zu konvertieren.
Leider gibt es auch im Eigenschaftenfenster nicht die Möglichkeit dieses Ergebnisfeld in einen anderen Typ
zu formatieren.
Grüße
Herbert
Hallo,
an sich, ist es doch völlig egal was die Abfrage anzeigt. Im Formular/Bericht kannst Du das Feld doch problemlos auf "Währung" formatieren.
Das geht übrigens auch in der Abfrage, was aber unüblich ist.
Hallo Klaus,
da hast du Recht - ich könnte dies alles über einen Bericht machen.
Wenn ich jedoch eine Summe in der Abfrage bilde also z.B.:
SummeZahlung: Nz([Bezahltgesamt1]) + Nz([Bezahltgesamt2]) wobei [Bezahltgesamt1] = 90 und [Bezahltgesamt2] = 900 dann
wird das Ergebnis als String zusammengesetzt: 90900.
Bei Differenzbildung klappt die Abfrage jedoch einwandfrei:
SummeZahlung: Nz([Bezahltgesamt1]) - Nz([Bezahltgesamt2]) Ergebnis: -810
Und hier verstehe ich das Ganze nicht. Wo liegt denn hier der Fehler?
Grüße Herbert
gelöscht, war ich wieder mal zu schnell und hab' nicht richtig gelesen.
Hallo,
+ ist auch Operator zum Verketten. Nz macht aus der Zahl Text, also wird verkettet. Das Minuszeichen hat keine 2. Bedeutung daher kann nix verwechselt werden und es wird gerechnet.
Du kannst auch mit ZCurrency direkt in Währung ändern. Versuche es mal so:
SummeZahlung: ZCurrency(Nz([Bezahltgesamt1];0)) + ZCurrency(Nz([Bezahltgesamt2];0))Nz würde ich auch noch den Ersatzparameter mitgeben.
Der ganze Aufwand ist auch einem falschen Datenmodell geschuldet. Die Zahlungen gehören in eine extra Tabelle mit einem FS zur Rechnung, einem Datumsfeld und ein Feld für den Zahlungsbetrag.
Jeder Zahlungseingang wird in je einem Datensatz erfasst.
Du kannst so zu einer Rechnung (oder was auch immer das ist) beliebig viele Zahlungseingänge erfassen. Der Krampf mit dem Nz entfällt ersatzlos, denn es gibt keine leeren Felder mehr. Die Summe aller Zahlungen ist dann die einfache Summenfunktion.
=Summe(Betrag)
Hallo Klaus,
astrein!! Funktioniert super - und wieder was gelernt!
Vielen Dank, du hast mir sehr geholfen!
Grüße
Herbert
Hallo,
Zitatund wieder was gelernt!
lies zum Lernen auch noch meine spätere Ergänzung bez. Datenmodell.
Hallo Klaus,
vielen Dank für diesen Tipp!
Grüße
Herbert
Hallo Herbert,
Zitatvielen Dank für diesen Tipp!
Ja, aber auch zügig umsetzen. Sonst fangen wir mit dem Thema hier
wieder an, wenn der erste Kunde drei oder mehr Zahlungen macht, -
oder möglichst noch mit Zahlungen für zwei Rechnungen.
gruss ekkehard