Autor Beitrag
baka0815
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mi 20.05.09 10:54 
Hallo zusammen,

sporadisch tritt bei einem Kunden der folgende Fehler auf:

ausblenden Quelltext
1:
2:
General SQL error.
Fehler bei Gleitkommakonvertierung. Die Quelle ist ungültig.


Die Abfrage ist ein Standard TQuery. Im (INSERT) SQL werden Parameter übergeben und dann mittels ParamByName() gesetzt - dabei sind natürlich auch Gleitkommawerte.
Ab und zu tritt dabei bei einem Kunden mit dem Microsoft SQL Server 2005 (Express Edition) der oben genannte Fehler auf, den ich nicht reproduzieren kann. Auch Onkel Google und die Forumssuche helfen hier nicht weiter. Insgesamt habe ich bei Google zwei Leidensgenossen (von 2004 und 2006) gefunden, die aber leider keine hilfreiche Antwort bekommen haben.

Hat von euch vielleicht wer 'ne Idee?
bummi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 1248
Erhaltene Danke: 187

XP - Server 2008R2
D2 - Delphi XE
BeitragVerfasst: Mi 20.05.09 11:01 
irgendwelche Trigger auf der Tabelle ?
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mi 20.05.09 11:08 
Nein, wir haben da keine Trigger in der Datenbank - höchstens dass der Kunde selbst welche angelegt hat, halte ich aber für unwahrscheinlich.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mi 20.05.09 17:57 
Ich weiß da leider auch nicht weiter, aber vielleicht könnte Dir der Kontakt mit dem
Ersteller des Threads 82954, also user profile iconGericasS weiterhelfen.
Der scheint ja eine Lösung gefunden zu haben.
- Oder habe ich Dein Problem jetzt falsch verstanden?
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Do 21.05.09 15:39 
Danke für die Info, aber das Problem ist kein Gleitkommaüberlauf in Delphi, sondern "irgendwo" im MS-SQL Server.

Die Werte die übergeben werden sind jedoch nicht außerhalb eines Bereichs, sondern Beträge wie "19,57".

Meine Vermutung ist, dass es etwas mit der Lokalisierung zu tun haben könnte, da wir aber Parameter nutzen, sollte es da eigentlich kein Problem geben.
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mo 25.05.09 10:10 
*pusch*

Habe bisher leider keine neue Erkenntniss, sonst keiner 'ne Idee?
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mo 25.05.09 17:52 
user profile iconbaka0815 hat folgendes geschrieben Zum zitierten Posting springen:
Die Werte die übergeben werden sind jedoch nicht außerhalb eines Bereichs, sondern Beträge wie "19,57".

Da hast du den Fehler ja: Datenbanken wollen in Queries eigentlich immer '.' als Dezimaltrenner sehen.

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mo 25.05.09 20:06 
Sprich: Du solltest Deinen einzufügenen Wert erst mal diesem hier aussetzen:
ausblenden Delphi-Quelltext
1:
2:
DeinEinzufuegenerWertAlsString:=StringReplace(DeinEinzufuegenerWertAlsString,'.','', [rfReplaceAll]); //um die 1.000-er Punkte wegzubekommen.
DeinEinzufuegenerWertAlsString:=StringReplace(DeinEinzufuegenerWertAlsString,',','.', [rfReplaceAll]); //um die Kommas als Punkte zu setzen
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Di 26.05.09 09:30 
Ich glaube, ihr habt mich falsch verstanden. :)

Wir schreiben die Parameter wie folgt: Query.ParamByName('ParamX').AsCurrency := CurrencyVariable;

Wüsste nicht, wo ich da beeinflussen kann ob ich in der Currency-Variable nun einen "." oder ein "," habe.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Di 26.05.09 16:00 
Oh.

Nur sporadisch, wie sporadisch denn? Eventuell ist das eine andere Query, die über 3 Ecken erst aufgerufen wird?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Di 26.05.09 16:22 
Wir haben das Open in einem Try-Except Block und schreiben beim Fehler sämtliche Informationen des fehlgeschlagenen Queries (also inkl. Parameter) in eine Datei. Daher kann ich bestimmen, welches Query es tatsächlich ist, ein querschlagendes Query kann ich also ausschließen.

So sporadisch, dass es bisher keinem meiner Kollegen (und mir bisher auch nicht) aufgefallen ist, weder in der Entwicklung noch beim Support und wohl auch nur bei einem Kunden.
Ich habe hier nur die Info, dass die Meldung beim Kunden kam, bei welchem SQL und welche Werte die Parameter hatten. Demnach ist jedoch alles ok...
DeddyH
Ehemaliges Mitglied
Erhaltene Danke: 1



BeitragVerfasst: Di 26.05.09 16:56 
Vielleicht ist auch eine Fremdsoftware im Spiel, die global mal eben temporär den Decimalseparator umstellt (hab ich schon erlebt).
Bernhard Geyer
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 721
Erhaltene Danke: 3



BeitragVerfasst: Di 26.05.09 17:14 
Sind eigentlich alle MS SQL Server Updates installiert? Ab und zu kommt es vor das sich Updates für den MS SQL Server nicht korrekt installieren lassen so das eine alte DB-Version läuft die noch (mehr) Fehler hat.
baka0815 Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 489
Erhaltene Danke: 14

Win 10, Win 8, Debian GNU/Linux
Delphi 10.1 Berlin, Java, C#
BeitragVerfasst: Mi 27.05.09 11:21 
Das mit der Fremdsoftware kann ich prüfen, aber da es sich um die Express-Version handelt, vermute ich nicht, dass auf die DB noch andere Programme zugreifen.

Was die Updates angeht, weiß ich nicht genau, welche installiert sind.
Der SQL-Server zeigt Version 9.00.1399.06 und es gibt ein SP2, leider weiß ich nicht, ob das SP2 die genannte Version hat.
Sehe gerade, dass das SP ein Datum vom 18.02.2007 hat, der SQL-Server jedoch den 14.10.2005 liefert - ich werd' denen also mal empfehlen, dass SP2 einzuspielen.
Martok
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 3661
Erhaltene Danke: 604

Win 8.1, Win 10 x64
Pascal: Lazarus Snapshot, Delphi 7,2007; PHP, JS: WebStorm
BeitragVerfasst: Mi 27.05.09 14:45 
Sehr interessante Fehler hatte ich mal (wenn auch bei Oracle), wenn Server und Client zu unterschiedliche Versionen haben.

Eventuell sind die Client-Libs neuer als der Server?

_________________
"The phoenix's price isn't inevitable. It's not part of some deep balance built into the universe. It's just the parts of the game where you haven't figured out yet how to cheat."