Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Float aus TDBEdit in Datenbanktabelle speichern (https://www.delphipraxis.net/214861-float-aus-tdbedit-datenbanktabelle-speichern.html)

BergLoewe 22. Mär 2024 17:20

Datenbank: Interbase • Version: XE7 • Zugriff über: FireDac

Float aus TDBEdit in Datenbanktabelle speichern
 
Hallo,

ich habe einen Datnebankserver auf Interbase und hier für eine Tabelle einen Haufen TDBEdists gemacht. Da werden nun auch Geldbeträge eingetragen. Also Floats(so habe ich die Datentypen der Felder in der IB-Tabelle gemacht) mit zwei Digits hinterm Komma. Im TDBEdit gibt man ja aber nur Text ein. Wenn man nun Post ausführt, wird das ordnungsgemäß in die Datenbank eingetragen - bis auf die Floats. Da entstehen offenbar irgendwo innendrin Rundungsfehler, denn aus 5,8 wird in der Datenbank 5,80000019073486.
Kann man da irgendwo die Digits der Rundung auf 2 begrenzen?

Olli73 22. Mär 2024 17:27

AW: Float aus TDBEdit in Datenbanktabelle speichern
 
Deklariere die Datenbankfelder besser als Numeric oder Decimal mit 2 Nachkommastellen. Mit float wirst du keinen Spaß haben.

hoika 25. Mär 2024 18:34

AW: Float aus TDBEdit in Datenbanktabelle speichern
 
Hallo,
"Double Precision" würde auch noch gehen.

ABER:
Wenn Du eh mit der Tabelle neu anfängst,
tu dir selbst einen Gefallen und speichere die Werte in Cent oder 1/10 Cent ab:
12.45 -> 1245 Cent oder -> 12450 1/10 Cent.

Die 1/10 soll wohl Rundungsfehlern vorbeugen,
hatte ich mal gelesen.

Zur Anzeige dann TDBdit.Displayformat (?) benutzen
oder OnGetValue (oder so ähnlich).

Oder besser gleich weg von den TBxxx-Dingers ...

BergLoewe 26. Mär 2024 09:08

AW: Float aus TDBEdit in Datenbanktabelle speichern
 
Super, Danke!


Alle Zeitangaben in WEZ +1. Es ist jetzt 11:29 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz