![]() |
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: ZEOS
Firebird - Fehler bei Datentyp "Decimal"
Hallo,
ich will in einer DB u.a. Preise speichern. Lege ich das entsprechende Datenfeld mit
SQL-Code:
an, bekomme ich beim Auslesen der Daten mittels
PORTO DECIMAL(9,2)
Delphi-Quellcode:
eine Fehlermeldung, dass der Wert des Feldes "Porto" außerhalb des zulässigen Bereiches liegt. In der Datenbank selbst ist z.B. der Wert 23,8 (für 23,80 €) gespeichert.
PortoFee := ZQuery1.FieldByName('Porto').AsFloat;
Habe ich das Feld mit
SQL-Code:
angelegt, bekomme ich beim Zugriff auf die Daten zwar keine Fehlermeldung, aber Werte wie z.B. 23,80 werden in der Datenbank intern als 23,7999992370605 abgespeichert.
PORTO Float
Was mache ich beim anlegen des Feldes als "Decimal" falsch? oder kann man Decimal-Felder nicht mit .AsFloat aus der DB auslesen? Vielen Dank Steffen |
Re: Firebird - Fehler bei Datentyp "Decimal"
Ein Float hat mehr als 2 Nachkommestellen. Versuch es mal mit .Value
|
Re: Firebird - Fehler bei Datentyp "Decimal"
Danke für den Tipp. Das hat geholfen.
|
Re: Firebird - Fehler bei Datentyp "Decimal"
Hallo,
Zitat:
Dann kannst du in der DB auch Rechnen (Sum), ohne Rundungsfehler-Probleme zu bekommen. Sollte es wirklich Float sein, nimm Double Precision. Bei Decimal hat Firebird/Interbase ein manchmal merkwürdiges Verhalten, so wird aus Decimnal(8,2) z.B. ein Integer, Heiko |
Re: Firebird - Fehler bei Datentyp "Decimal"
Hallo,
für DECIMAL kann man (zumindest in dbExpress) den Wert mit ('FELD').AsCurrency auslesen. Damit sind dann die bei Float möglichen Rundungsprobleme ausgeschlossen. |
Re: Firebird - Fehler bei Datentyp "Decimal"
Hallo,
Dann kannst du in der DB auch Rechnen
SQL-Code:
Also Select Sum(Preise) from XXX
Das hatte ich gemeint. Heiko |
Alle Zeitangaben in WEZ +1. Es ist jetzt 23:01 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz