AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Firebird - Fehler bei Datentyp "Decimal"
Thema durchsuchen
Ansicht
Themen-Optionen

Firebird - Fehler bei Datentyp "Decimal"

Ein Thema von runningsoft · begonnen am 17. Mär 2010 · letzter Beitrag vom 17. Mär 2010
Antwort Antwort
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#1

Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 11:59
Datenbank: Firebird embedded • Version: 1.5 • Zugriff über: ZEOS
Hallo,

ich will in einer DB u.a. Preise speichern.

Lege ich das entsprechende Datenfeld mit
PORTO DECIMAL(9,2) an, bekomme ich beim Auslesen der Daten mittels

PortoFee := ZQuery1.FieldByName('Porto').AsFloat; 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.

Habe ich das Feld mit
 PORTO Float 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.

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
Steffen
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

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

Re: Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 12:04
Ein Float hat mehr als 2 Nachkommestellen. Versuch es mal mit .Value
Markus Kinzler
  Mit Zitat antworten Zitat
Benutzerbild von runningsoft
runningsoft

Registriert seit: 8. Okt 2004
Ort: Bernau
108 Beiträge
 
Delphi 10.4 Sydney
 
#3

Re: Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 12:18
Danke für den Tipp. Das hat geholfen.
Steffen
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#4

Re: Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 12:49
Hallo,

Zitat:
ich will in einer DB u.a. Preise speichern.
Speichere die Preise als EuroCent, also Integer ab.
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
Heiko
  Mit Zitat antworten Zitat
mjustin

Registriert seit: 14. Apr 2008
3.006 Beiträge
 
Delphi 2009 Professional
 
#5

Re: Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 13:07
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.
Michael Justin
habarisoft.com
  Mit Zitat antworten Zitat
hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#6

Re: Firebird - Fehler bei Datentyp "Decimal"

  Alt 17. Mär 2010, 13:10
Hallo,

Dann kannst du in der DB auch Rechnen

Also Select Sum(Preise) from XXX
Das hatte ich gemeint.


Heiko
Heiko
  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 08:56 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