Hola Camilo.
Cita:
Empezado por Camilo
Hola Ecfisa.
El código lo implemento y no pasa nada. es decir no bota error pero no actualiza nada tampoco. por otro lado tengo la duda de ese "IBQueryTmp". de que se trata?
|
El código incrementa o decrementa las columnas cantidad y precio en base al valor enviado en sus respectivos parametros:
Cant y
Prec y puedo asegurarte que lo hace (a menos que realizes un
Rollback o
RollbackRetaining).
También podría suceder que esté realizando la modificación y no la veas reflejada por que no actualizaste el
TDataSet asociado al
TDBGrid...
"IBQueryTmp", es otro
TIBQuery qualquiera, de uso general, pero también podría haberlo escrito de este modo:
Código Delphi
[-]
procedure UpdateInventory(const Cod: string; const Cant: Integer; const Prec: Currency);
var
qy: TIBQuery;
begin
qy := TIBQuery.Create(nil);
try
qy.Database := Tu_DataModule.Tu_IBDatabase;
qy.Transaction := Tu_DataModule.Tu_IBTransaction;
qy.Close;
qy.SQL.Clear;
qy.SQL.Add('UPDATE INVENTARIO');
qy.SQL.Add('SET CANTIDAD = CANTIDAD + COALESCE(:CANTIDAD, 0),');
qy.SQL.Add('PRECIO = PRECIO + COALESCE(:PRECIO, 0)');
qy.SQL.Add('WHERE CODIGO_PRODUCTO = :CODIGO');
qy.ParamByName('CODIGO').AsString := Cod;
qy.ParamByName('CANTIDAD').AsInteger := Cant;
qy.ParamByName('PRECIO').AsCurrency := Prec;
qy.ExecSQL;
finally
qy.Free;
end;
end;
Si no deseas complicarte, una buena alternativa es el uso del
TIBDataSet, un componente que conjuga las virtudes de una tabla y una consulta, te recomiendo que revises estos enlaces que tratan sobre él:
Saludos