Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!

Mobiles Hauptmenü

Nz Funktion: Dateikonvertierung über SQL bei Abfrage in Typ "Währung"

Begonnen von herb54, November 27, 2020, 14:57:27

⏪ vorheriges - nächstes ⏩

herb54

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

MzKlMu

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.
Gruß Klaus

herb54

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

Beaker s.a.

gelöscht, war ich wieder mal zu schnell und hab' nicht richtig gelesen.
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)

MzKlMu

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)
Gruß Klaus

herb54

Hallo Klaus,

astrein!! Funktioniert super - und wieder was gelernt!

Vielen Dank, du hast mir sehr geholfen!

Grüße
Herbert

MzKlMu

Hallo,
Zitatund wieder was gelernt!
lies zum Lernen auch noch meine spätere Ergänzung bez. Datenmodell.
Gruß Klaus

herb54


Beaker s.a.

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
Alles, was geschieht, geschieht. - Alles, was während seines Geschehens etwas anderes geschehen lässt, lässt etwas anderes geschehen. - Alles, was sich selbst im Zuge seines Geschehens erneut geschehen lässt, geschieht erneut. - Allerdings tut es das nicht unbedingt in chronologischer Reihenfolge.
(Douglas Adams, Mostly Harmless)