In einer UPDATE-Abfrage über ein natives Command-Okjekt möchte ich ein Datenfeld vom Type datetime in einer Tabelle auf dem SQL Server aktualisieren. Ich benutze modifizierten Code aus Herrn Koschs Buch Ado und Delphi
<PRE>
procedure TForm1.UpdateWithParams1;
var aCon: _Connection;
aCommand: _Command;
vRows: OLEVariant;
begin
aCon := coConnection.Create;
aCon.CursorLocation := adUseClient;
aCon.Open(CstrConn4,'','',adConnectUnspecified);
try
aCommand := CoCommand.Create;
try
with aCommand do begin
CommandType := adcmdText;
CommandText := 'UPDATE Personen SET Zeit = ? WHERE Nachname = ?';
Parameters.Append
(CreateParameter('Zeit',adNumeric,adParamInput,8,
EmptyParam));
Parameters.Append
(CreateParameter('Nachname',adVarChar,adParamInput ,
40,EmptyParam));
Set_ActiveConnection(aCon);
Parameters[0].Value := '18.02.1940';
Parameters[1].Value := 'Grigull';
Execute(vRows,EmptyParam,adExecuteNoRecords);
end; // with aCommand
finally
aCommand := nil;
end; // try finally
finally
aCon.Close;
aCon := nil;
end; // try finally
end; // UpdateWithParams
</PRE>
Ich kann machen was ich will. Ich erhalte immer die Fehlermeldung "Die Genauigkeitsangabe ist ungültig". Gleiches passiert bei Feldern vom Typ NUMERIC oder MONEY. String und Integer funktionieren.
Was mache ich falsch?
Für Hinweise bin ich dankbar.
Mit freundlichem Gruss
Hans Grigull
<PRE>
procedure TForm1.UpdateWithParams1;
var aCon: _Connection;
aCommand: _Command;
vRows: OLEVariant;
begin
aCon := coConnection.Create;
aCon.CursorLocation := adUseClient;
aCon.Open(CstrConn4,'','',adConnectUnspecified);
try
aCommand := CoCommand.Create;
try
with aCommand do begin
CommandType := adcmdText;
CommandText := 'UPDATE Personen SET Zeit = ? WHERE Nachname = ?';
Parameters.Append
(CreateParameter('Zeit',adNumeric,adParamInput,8,
EmptyParam));
Parameters.Append
(CreateParameter('Nachname',adVarChar,adParamInput ,
40,EmptyParam));
Set_ActiveConnection(aCon);
Parameters[0].Value := '18.02.1940';
Parameters[1].Value := 'Grigull';
Execute(vRows,EmptyParam,adExecuteNoRecords);
end; // with aCommand
finally
aCommand := nil;
end; // try finally
finally
aCon.Close;
aCon := nil;
end; // try finally
end; // UpdateWithParams
</PRE>
Ich kann machen was ich will. Ich erhalte immer die Fehlermeldung "Die Genauigkeitsangabe ist ungültig". Gleiches passiert bei Feldern vom Typ NUMERIC oder MONEY. String und Integer funktionieren.
Was mache ich falsch?
Für Hinweise bin ich dankbar.
Mit freundlichem Gruss
Hans Grigull
Comment