ich hatte für ein Feld ePreis in der Tabelle Rechnungspositionen in Firebird den Datentyp
Code: Alles auswählen
Numeric(9,2)
Welch ein Graus. Aus irgendeinem Grund wird der eingegebene Betrag 205,34 in 205,35 gespeichert. 205,33 in 205,34, 205,35 in 205,36...
Das passiert nur, wenn der Betrag geändert wird; bei Änderung z.B. der Menge bleibt der Betrag erhalten.
Ganz knapp vor der Allgemeinen Verzweifelung habe ich in der Datenbank den Datentyp in Numeric(10,3) geändert; siehe da, es paßt.
Auch beim Zurücksetzen auf Numeric(10,2) wurde der Wert richtig gespeichert.
Ein Teil der Lösung scheint zu sein, das Numeric(10,x) intern als BIGINT, Numeric(9,x) intern als INTEGER gespeichert wird:
https://firebirdsql.org/file/documentat ... edtypes-de
Ich könnte jetzt weiter testen, habe aber bereits einen Nachmittag mit dem Fehler gekämpft.
Ob der Fehler an Firebird, Firebird 4.01 (ich weiß, es gibt 4.03, aber die 4.01 ist auch beim Kunden im Einsatz) oder doch an Lazarus 2.26 liegt ist mir jetzt erstmal egal.