Float-Parameter mit ADOQuery auf MySQL

09/11/2011 - 11:54 von Lothar Armbrüster | Report spam
Hallo NG,
ich habe gerade ein Problem mit einem Update einer MySQL-Tabelle. Ich
verwende D2010 und TADOQuery.
Folgenden SQL verwende ich für das Update:

update tabelle set
spalte=:SPALTE
where
id=:ID

Im Programm verwende ich folgenden Code:

var
wert :double;

...
wert := 0.25;

with ADOQuery_Update do
begin
Parameters.ParamByName('SPALTE').Value := wert;
Parameters.ParamByName('ID').Value := 1;
ExecSQL;
end;

Der Parameter SPALTE hat DataType ftFloat. Im ExecSQL bekomme ich eine
Exception mit der Meldung:

'[MySQL][ODBC 5.1 Driver][mysqld-5.5.13]Incorrect decimal value:
'0,25' for column 'Spalte' at row 1'.

Ich habe schon versucht, DecimalSeparator auf '.' zu setzen, aber das
hat nicht geholfen.
Was kann ich tun? Warum werden die Parameter nicht als Double
übergeben, sondern in Text gewandelt?
Muss ich die Parameter wirklich selbst als Text formatieren? Kann ich
in den ADO-Einstellungen etwas drehen?

Fragen über Fragen...

Lothar Armbrüster
 

Lesen sie die antworten

#1 Christian Gudrian
09/11/2011 - 17:37 | Warnen spam
Am Mittwoch, 9. November 2011 11:54:27 UTC+1 schrieb Lothar Armbrüster:

Muss ich die Parameter wirklich selbst als Text formatieren? Kann ich
in den ADO-Einstellungen etwas drehen?



Des Pudels Kern ist die Konvertierung des Variant-Wertes in eine String-Repràsentation, die in das SQL-Statement eingebaut werden kann. Intern werkelt da die API-Funktion VarBstrFromCy -- und die verwendet standardmàßig die Zahlenformatierung aus den Regionseinstellungen in der Systemsteuerung.

Ob und wie man die überschreiben kann, weiß ich nicht.

Christian

Ähnliche fragen