Lothar Armbrüster
2011-11-09 10:54:27 UTC
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
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