Hola:
Trabajando con Delphi 7, Access 97 y TADOCommand.
Tengo la siguiente función:
Código Delphi
[-]
function TModDatos.Ejecutar_Comando(SQL: String; Valores: Array of Variant): Boolean;
var
i: Integer;
begin
Comando_1.CommandText:= SQL; for i:= 0 to High(Valores) do
Comando_1.Parameters[i].Value:= Valores[i];
Comando_1.Prepared:= True;
_lComandoFinalizado:= False;
Comando_1.Execute;
If _RegistrosAfectados = 0 then result:= False else result:= True;
end;
El problema me surge cuando lo llamo de la siguiente forma:
Código Delphi
[-]
Texto_Sql:= 'DELETE * FROM MiTabla WHERE (MiTabla.Nombre LIKE :P0);';
Ejecutar_Comando( Texto_Sql, [QuotedStr('_Sector_*')])
Al realizar la llamada anterior no se elimina ningún registro.
Sin embargo, si depurando copio el valor de SQL en el punto Nota 1 de la función, y lo pego en una consulta de access, la ejejcución de la consulta sí realiza la eliminación de los registros.
He probado ha realizar la llamada con otras instrucciones como
Código Delphi
[-]
Texto_Sql:= 'DELETE * FROM MiTabla WHERE (MiTabla.Nombre LIKE ' + QuotedStr('_Alcance_*') + ');';
O bien pasando la cadena con la que compara con doble comilla : "_Alcance_*"
Pero obtengo el mismo resultado.
Lo que me extraña es que en access las instrucciones si funcionan.
También decir que el procedimento Ejecutar_Comando funciona correctamente con otras instrucciones que no contenga LIKE, como:
'DELETE * FROM MiTabLa WHERE Id = 10;'
Saludos