Ver Mensaje Individual
  #3  
Antiguo 02-08-2015
Avatar de gatosoft
[gatosoft] gatosoft is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Bogotá, Colombia
Posts: 833
Reputación: 21
gatosoft Va camino a la fama
No es eficiente... primero, porque intentas manejar un query como si fuese una tabla. Desde hace mucho se ha dicho que el manejo de componentes TTables, en la mayoría de los casos no es recomendado.

Por otro lado, no todos los componentes TQuery te permiten editar sus salidas, debido a que hay resultados complejos que pueden venir de diferentes tablas.

Además no es eficiente que hagas una consulta de todos los Productos... para modificar solo uno de ellos.

En tu segundo código veo una línea que sobra... y es el Open: cuando invocas el "active", implícitamente estas haciendo un open.

Finalmente, Retomando lo que propone Casimiro, deberías hacer algo como:

Código Delphi [-]
 with Query do
  begin
    Close;
    SQL.Clear;
    SQL.Add('update productos set fechaalta=:v1, detalle=:v2, categoria=:v3 where codigo=:v4');
    prepare
    Parambyname('fecha_alta').Value := FormatDateTime('DD/MM/YYYY', Date);
    Parambyname('detalle').AsString := Memo1.Lines.Text;
    Parambyname('categoria').AsString := Edit1.Text;
    ExecSQL;
  end;
Responder Con Cita