Estuve leyendo algo parecido miren aqui:
Ha llegado el momento de explicaros de donde me venia el problema. Me he pasado días y días mirando por Internet, “rastreando” las causas del error y cada vez que modificaba el código del programa la pesadilla continuaba, yo creía que el problema venia en que estaba pasando mal los parámetros en la fecha o alguna historia de este tipo (eso me pasa por obcecarme en la misma idea)
La pista me la dió uno de los errores que me generaba
Microsoft SQL Server Driver. Caracteristica opcional no implementada
El tema es que originalmente la aplicación del cliente fue desarrollada en VB6 y utiliza como bases de datos Microsoft SQL Server 2000. Habia que hacer unas modificaciones y he usado Delphi 7. Los errores me los daba tanto en Windows XP como en Vista.
La Solución:
http://support.micro...om/kb/294160/es
Personalmente para resolver el problema del paso de las fechas por parámetro, he tenido que modificar la cadena de conexión ADO y también el código de la aplicación para que me fuera aceptada la fecha cuando se realiza la modificación del registro.
La cadena de conexión que usaba en la propiedad ConectionString del componente ADOConection era la siguiente:
Provider=MSDASQL.1;Password=password;Persist Security Info=True;User ID=nombre_usuario;Data Source=sqllaco;Mode=ReadWrite;Extended Properties="DSN=midsn;UID=sa;PWD=laco;APP=Enterprise;WSID=JAVIER_LOCAL;DATABASE=RECIBOS";Initial Catalog=RECIBOS
Y ahora es:
Provider=SQLOLEDB.1;Password=password;User ID=nombre_usuario;Data Source=sqllaco;Mode=ReadWrite;Extended Properties="DSN=midsn;UID=sa;PWD=laco;APP=Enterprise;WSID=JAVIER_LOCAL;DATABASE=RECIBOS";Initial Catalog=RECIBOS
La parte Persist Security Info=True, que aparece en la antigua configuración, en la nueva, se suprime (no recuerdo exactamente en que pagina encontré este dato, creo que en la misma web del enlace)
Y el código de programa para que esto funcione es el siguiente:
Código Delphi [-]
procedure TForm1.Button1Click(Sender: TObject);
Var
FechaActual : TDateTime;
begin
FechaActual :=now;
with ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Text:='Update CuotasEmitidas SET ImpRecibo = 21.02, FecSituacion= :MiFecha ' +
' WHERE (CuotasEmitidas.CodPers = 462 AND CuotasEmitidas.NumRecibo = 1)';
//---------------------------------------------
// Si añado este bloque me genera error
(* with Parameters.AddParameter do
begin
DataType:=ftDate;
Name :='MiFecha';
Direction:=pdInput;
end;*)
// ------------------------------
Parameters.ParamByName('MiFecha').Value:=StrToDate(FormatDateTime('dd/mm/yyyy',fechaActual));
Prepared:=True;
if prepared then
ExecSQL;
end;
Si añado el bloque de código que lo tengo como comentario, me genera el error:
Multiple Step OLE DB operation generated errors. Check each OLE DB status value, if avalaible. No work was done.
Y en al ADOQuery1 no tengo ningún parámetro creado !
Bueno, pues aqui dejo esto por si alguien le puede servir de ayuda.
Saludos