AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

IBSql vs. IBQuery

Ein Thema von mquadrat · begonnen am 16. Mai 2011 · letzter Beitrag vom 23. Mai 2011
Antwort Antwort
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#1

IBSql vs. IBQuery

  Alt 16. Mai 2011, 16:32
Datenbank: Firebird • Version: 2.1 • Zugriff über: IBX
Hallo zusammen,

ich habe heute etwas verwundert Folgendes festgestellt (Programm komplett gleich, gleiche DB / gleiche Daten):

Mache ich das Update-Statement mit einer TIBSQL findet sich anschließend in der DB ein anderer Float-Wert wie wenn ich das Statement mit einer TIBQuery an die Datenbank schicke. Der Unterschied scheint in der Behandlung der Parameter zu liegen. Bei der TIBSQL hatte der Parameter (TIBSQLVAR) direkt nach der Zuweisung mittels ParamByName().asFloat an der vierten Nachkommastelle einen anderen Wert, als er eigentlich haben sollte (Abweichung 0,0008). Bei Verwendung einer TIBQuery (TParam) und identischer Zuweisung ist keine Abweichung aufgetreten.


Was mich nun interessieren würde, wäre ob das jemand verifizieren kann oder das vielleicht eine der - immer wieder angekündigten, aber bis jetzt nicht aufgetretenen - Inkompatibiliäten zwischen IBX und Firebird ist.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#2

AW: IBSql vs. IBQuery

  Alt 17. Mai 2011, 08:07
Welcher Datentyp wird denn für das Feld in der Datenbank verwendet? Und welcher Dialekt (1 od. 3)?
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#3

AW: IBSql vs. IBQuery

  Alt 18. Mai 2011, 10:22
Dialect 1, Feld war erst ein float und später ein double (Wurde umgestellt, bevor mir aufgefallen ist, dass sich der Wert im Parameter ändert).


Wie gesagt, die Wertänderung tritt bereits im Parameter auf, also BEVOR die Query ausgeführt wird.
  Mit Zitat antworten Zitat
tsteinmaurer

Registriert seit: 8. Sep 2008
Ort: Linz, Österreich
530 Beiträge
 
#4

AW: IBSql vs. IBQuery

  Alt 18. Mai 2011, 10:58
Generell hat man bei Dialect 1 und der Verwendung von FLOAT, DOUBLE es immer mit Rundungsproblemen zu tun.
  Mit Zitat antworten Zitat
daddy

Registriert seit: 9. Sep 2005
Ort: Köln
126 Beiträge
 
Delphi 7 Enterprise
 
#5

AW: IBSql vs. IBQuery

  Alt 18. Mai 2011, 23:50
Könntest Du denn auch BCDs in Delphi bzw. "Decimal(Len,NK)" in Firebird verwenden? Damit sollte es eigentlich keine Rundungsprobleme geben.
  Mit Zitat antworten Zitat
hoika

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

AW: IBSql vs. IBQuery

  Alt 23. Mai 2011, 14:14
Hallo,

Zitat:
Dialect 1, Feld war erst ein float und später ein double
Das sind beides keine Firebird-Datentypen.
Wie heist der Typ genau ?


Heiko
Heiko
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#7

AW: IBSql vs. IBQuery

  Alt 23. Mai 2011, 14:28
Nur nochmal, damit das nicht in die falsche Richtung läuft. Mir ist klar, dass sich manche Zahlen nicht exakt ausdrücken lassen und das diese Fehler in bestimmten Situationen recht groß werden können. Darum geht es aber explizit nicht!

Bei der Zuweisung in den Parameter mittels ParamByName().asFloat werden von IBSql und IBQuery unterschiedliche Werte im Parameter gesetzt. Lasse ich diese anschließend ausgeben habe ich eine Differenz im konkreten Fall von 0,008. Und das ist IMHO zu viel. Da die Query noch nicht abgefeuert wurde, würde ich den Fehler eher in den Komponenten vermuten.
  Mit Zitat antworten Zitat
hoika

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

AW: IBSql vs. IBQuery

  Alt 23. Mai 2011, 14:42
Hallo,

die beiden Zugriffskomponenten viell. interpretieren schon beim Zwischenspeichern
basierend auf dem tatsächlichen Datentyp das Ergebnis.
Ich hatte das Problem beim Umstieg von Paradox auf IB/FB und Decimal(8,2).

Deshalb noch mal die Frage.
Was ist der native Datentyp unter FB.


Heiko
Heiko
  Mit Zitat antworten Zitat
mquadrat

Registriert seit: 13. Feb 2004
1.113 Beiträge
 
Delphi XE2 Professional
 
#9

AW: IBSql vs. IBQuery

  Alt 23. Mai 2011, 14:50
Also wenn double precision nicht der native Typ ist, dann müsstest du mir mal kurz sagen, wo ich die Info finde.
  Mit Zitat antworten Zitat
hoika

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

AW: IBSql vs. IBQuery

  Alt 23. Mai 2011, 15:12
Hallo,

also double precision höre ich hier das erste Mal ...
OK, mit Double Precision hatte ich bisher keine Probleme.


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 17:39 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