PDA

Vollständige Version anzeigen : Eingabefeld-Inhalt wird gerundet :-(


Mufti77
05.10.2002, 11:41
Tag zusammen,

ich hab folgendes kleines Problem:
In einem Unterformular gebe ich im Eingabefeld Betrag den Betrag 17,65 € ein.
Dieser Betrag soll durch folgende Funktion in die Tabelle T_Daten eingetragen werden:

Dim db As Database
Dim rst As Recordset
Set db = CurrentDb()
Set rst = db.OpenRecordset("T_Daten")
With rst
.AddNew
!Betrag = Forms!F_Main!F_DatenUnter!Betrag
.Update
End With
rst.Close
db.Close

Bei dem Eingabefeld und dem Tabellenfeld ist "Format = Euro"
und "Dezimalstellen = Automatisch"

Warum steht in meiner Tabelle nach Eintragen nicht 17,65 € sondern 18,00 €?
Warum und wo wird denn hier gerundet?

Wäre cool wenn ihr mir weiter helfen könnt ;)

Josef Östreicher
05.10.2002, 12:22
Hallo,

ich hab Dein Beispiel durchprobiert. Bei mir wird nicht gerundet. Ich weiß, das hilft Dir auch nicht weiter, aber mehr bringe ich nicht raus, da der Fehler bei mir nicht auftritt.

FrankH
05.10.2002, 13:03
Hallo,

schau Dir die Tabelle im Entwurf nochmal genau an. Vermutlich ist das Zahlenfeld als Long Integer definiert (Standardwert bei Zahl). Da nützt die beste Definition der Dezimalstellen nichts - es bleiben ganze Zahlen. Das Feld sollte als Single oder Double definiert werden und prompt geht´s...

Frank

Mufti77
05.10.2002, 14:00
Das mit dem LongInteger war ein Volltreffer :top:

Ein herzliches Danke an Josef und Frank ;)

erwin
05.10.2002, 17:48
@frankH

na ich weiss nicht, ob sich Gleikommazahlen (Double oder Single - IMHO ganz schlecht) eignen um Geldbeträge zu speichern ?

Ich würde da dringend Currency oder Decimal empfehlen = Festkommazahlen !

Ansonsten siehe IEEE 754 (Rundungsproblematik bei Gleitkommaarithmetik)
<a href="http://www.google.at/search?q=IEEE+754&ie=ISO-8859-1&hl=de&meta=lr%3Dlang_de" target="_blank">http://www.google.at/search?q=IEEE+754&ie=ISO-8859-1&hl=de&meta=lr%3Dlang_de</a>

so long Erwin...

FrankH
05.10.2002, 20:22
@erwin

Das ist im Prinzip richtig. Die Access-Einstellung "Feldgröße" kennt aber nur Single und Double.
Ganz korrekt beschrieben muß dann bei Format noch die Festkommazahl angegeben werden. Besser? :rolleyes:

Frank

erwin
06.10.2002, 11:30
Sorry - Nein nicht besser, sondern nicht verstanden !

Natürlich "kennt" Access (bzw. die Jet-Engine) den Datentyp "Währung" (Currency) wobei die Formatierung des Feldes völlig unerheblich ist, ausschlaggebend ist der Datentyp !

Double und vorallem Single - DatenTYPEN eignen sich (da das Gleitkommazahlen sind) nur sehr bedingt zur Speicherung von "Geld", da bei diesen Datentypen prinzipbedingt auch bei einfachen Additionen/Subtraktionen Rundungsprobleme auftreten können. Dies ist bei Verwendung von "Currency" als DatenTYP (da das intern als Festkommazahl - hat nix mit der Formatierung zu tun - behandelt wird) nicht der Fall.

so long Erwin...

FrankH
06.10.2002, 14:16
Danke für Deine Ausdauer - jetzt habe auch _ich_ es begriffen...

Frank

P.S. Wozu brauche ich DSL, wenn ich mit dem Denken noch nicht mal mit meinem Analog-Modem mitkomme? :lachen: