AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi sqlite + Dezimalstellen
Thema durchsuchen
Ansicht
Themen-Optionen

sqlite + Dezimalstellen

Ein Thema von Kuster Peter · begonnen am 1. Mai 2009 · letzter Beitrag vom 1. Mai 2009
Antwort Antwort
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#1

sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:31
Datenbank: sqlite • Version: 3 • Zugriff über: zeos
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:39
Multipliziere die werte mit 100 und speichere sie als integer
Markus Kinzler
  Mit Zitat antworten Zitat
Jürgen Thomas

Registriert seit: 13. Jul 2006
Ort: Berlin
750 Beiträge
 
#3

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:45
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
#D mit C# für NET, dazu Firebird
früher: Delphi 5 Pro, Delphi 2005 Pro mit C# (also NET 1.1)
Bitte nicht sauer sein, wenn ich mich bei Delphi-Schreibweisen verhaue; ich bin inzwischen an C# gewöhnt.
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#4

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:47
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.
Markus Kinzler
  Mit Zitat antworten Zitat
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#5

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:51
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
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.851 Beiträge
 
Delphi 11 Alexandria
 
#6

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 14:55
in der Abfrage wieder durch 100 teilen:

select Betrag / 100 as Betrag, ...
Markus Kinzler
  Mit Zitat antworten Zitat
Kuster Peter

Registriert seit: 3. Apr 2007
Ort: Zürich
136 Beiträge
 
Delphi 7 Professional
 
#7

Re: sqlite + Dezimalstellen

  Alt 1. Mai 2009, 15:27
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
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:28 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