PDA

Vollständige Version anzeigen : Problem mit Rundung


Cuugan
11.05.2004, 12:09
Hallo Leute,

ich hab ein Problem mit einer Rundung.
Ich habe mal eine Beispieltabelle angehängt um mein Vorhaben zu verdeutlichen.

Ich habe folgende Felder in der tblStart

id, Zahl 1, Zahl 2, Zuschlag
1, 1000, 9,86, 1,17 (als beispiel)

jetzt möchte ich über eine abfrage den Einheitspreis (EP) ermitteln.
dies mache ich in dem ich schreibe:

EP: [zahl 2]*[zuschlag] (Als Ausdruck)
Beispiel: 9,86 * 1,17 = 11,5362
!!!Diesen Wert möchte ich auf nur zwei Nachkommastellen begrenzen!!!
- kann ich ja ohne probleme mit den Eigenschaften einstellen (auf Festkommazahl) --> gerundet wird dann aus 11,5362 = 11,54 €

anschliessend möchte ich diesen EP mit der Menge multiplizieren

Gesamt: [EP]*[zahl 1] (auch als Ausdruck)
allerdings bekomme ich hier immer als Gesamtsumme 11536,20 € und nicht wie von mir gewünscht 11540,00 €.

Wie und wo muss ich dass denn korrigieren?...hab mich fast jedes szenario durchprobiert.

Gruss
Hansi

Arne Dieckmann
11.05.2004, 12:16
Verwende die Funktion fctRound von Donkarl (FAQ 2.1) in der Abfrage:

SELECT tblStart.id, tblStart.[zahl 1], tblStart.[zahl 2], tblStart.zuschlag, fctRound([zahl 2]*[zuschlag],2) AS EP, [EP]*[zahl 1] AS Summe
FROM tblStart
GROUP BY tblStart.id, tblStart.[zahl 1], tblStart.[zahl 2], tblStart.zuschlag;

Cuugan
11.05.2004, 12:22
hallo arne,

vielen dank für deine hilfe, ich habe parallel noch folgenden tipp gefunden und gerade erfolgreich ausprobiert:

wenn ich:

test: ZCurrency(([EP])/100)*100 (als ausdruck) eingebe, schmeisst er mir den korrekten wert raus, mit dem ich dann auch weiterrechnen kann...

trotzdem vielen dank!
cu
Hansi

Arne Dieckmann
11.05.2004, 12:24
Ich würde aber nicht meine Hand dafür ins Feuer legen, dass es mit der ZCurrency-Lösung immer klappt. Das Thema "Rundungsfehler" ist ein Dauerbrenner ...

Cuugan
11.05.2004, 17:39
muss nochmal was nachhaken:

ich habe in meiner "richtigen" db folgendes feld in der abfrage:

Ausdr3: Summe(Wenn([EVP];0;[Preis]*[Menge]*[Zuschlag]*[textmenge]))

wenn ich dieses feld (welches so abgesehen von den rundungsfehlern) einwandfrei funktioniert, durch dieses ersetze:

Ausdr3: Summe(Wenn([EVP];0;[EPreisrund]))

als Info:
EPreisrund: ZCurrency(([EPreis])/100)*100

...dann erscheint die Fehlermeldung, dass Unterabfragen nicht im Ausdruck verwendet werden können.

Wie könnte ich dennoch das Problem bewältigen?

Arne Dieckmann
11.05.2004, 18:00
Ich sehe da jetzt keine Unterabfrage. Wenn man den SQL-String sähe, könnte man mehr sagen.
Evtl. solltest Du die gesamte Berechnung und Rundung in einem Rutsch durchführen.

Cuugan
11.05.2004, 18:07
hi arne...

da grübel ich schon seid stunden und sobald man postet bekommt man ne neue idee:

so funktionierts jetzt:

Ausdr3: Summe(Wenn([EVP];0;ZCurrency(([Preis]*[Zuschlag]*[textmenge])/100)*100*[Menge]))

hattest also recht....sollte man in einem rutsch machen

schönen dank,

gruss
hansi