Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi sqlite + Dezimalstellen (https://www.delphipraxis.net/133412-sqlite-dezimalstellen.html)

Kuster Peter 1. Mai 2009 14:31

Datenbank: sqlite • Version: 3 • Zugriff über: zeos

sqlite + Dezimalstellen
 
Ich möchte mit sqllite ein Prg erstellen, bei dem ein Feld ca. 10 Stellen breit ist mit fix 2 Kommastellen. Gibt es eine Möglichkeit in sqlite so ein Feld zu erstellen oder habt ihr mir einen anderen Tipp? Es ist wichtig, dass auch bei denjenigen Feldern, bei denen Beträge ohne Kommastellen, hinten zwei Kommastellen sind, einfach mit 00. Beispiel: 55.00 oder 55.50 oder 55.55 Bin um jeden Hinweis dankbar.

Peter

mkinzler 1. Mai 2009 14:39

Re: sqlite + Dezimalstellen
 
Multipliziere die werte mit 100 und speichere sie als integer

Jürgen Thomas 1. Mai 2009 14:45

Re: sqlite + Dezimalstellen
 
Hallo Peter,

unter SQLite: Datentypen finde ich nur REAL als Datentyp für Dezimalzahlen. Unter anderen SQL-Datenbanken kommen auch NUMERIC und DECIMAl infrage.

FLOAT, REAL, DOUBLE PRECISION sind SQL-Typen mit "ungefährer" Größenangabe. NUMERIC und DECIMAL speichern den genauen Wert. Wenn es dir darauf ankommt, ist Markus' Hinweis ein geeigneter Ausweg.

Du musst unbedingt zwischen der Speicherung in einer DB und der Darstellung unterscheiden: Eine Dezimalzahl wird "irgendwie" in der DB gespeichert; wie genau, muss dich überhaupt nicht interessieren. Du kannst sicher sein, dass die Zahlenwerte "500" und "500.000" identisch gespeichert werden. Lediglich bei der Darstellung, z.B. in der GUI oder beim Ausdrucken, musst/kannst du die Nachkommastellen steuern; aber das hat überhaupt nichts mit der Speicherung in der DB zu tun.

Jürgen

mkinzler 1. Mai 2009 14:47

Re: sqlite + Dezimalstellen
 
SqLite versucht die für den wert beste Speicherung zu verwenden. sollen es genau 2 Stellen sein, würde ich wie geschrieben als integer ( mit 100 multipliziert) speichern.

Kuster Peter 1. Mai 2009 14:51

Re: sqlite + Dezimalstellen
 
Ja, ich könnte es mir vorstellen, doch nun habe ich ein ganz anderes Brett vor dem Kopf: Wenn ich ganze Zahlen habe, wie zeige ich diese dann mit Kommastelle an: Im Grid und so. Ich könnte aber auch 2 Eingabefelder machen, die zusammenfügen und durch 100 teilen und dann in einem Float Feld speichern. Ist nicht so gut, doch wenns nicht geht.

Peter

mkinzler 1. Mai 2009 14:55

Re: sqlite + Dezimalstellen
 
in der Abfrage wieder durch 100 teilen:

SQL-Code:
select Betrag / 100 as Betrag, ...

Kuster Peter 1. Mai 2009 15:27

Re: sqlite + Dezimalstellen
 
Ich werde es so versuchen:
Feld Numeric, dann das Eingabefeld Formatieren ######0.00, dann beim Speichern Feld * 100 und dann / 100 und dann speichern. Oder einfach Nummeric und dann die Eingabe machen lassen mit oder ohne Punkt, dann mal * 100 und wieder / 100 und dann speichern.

Ich hoffe so geht es. Bin halt immer noch ein Pascal Frischling.

Peter


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:57 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