Ver Mensaje Individual
  #11  
Antiguo 17-12-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Reputación: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Es que sin saber lo que son esas variables, lo que estás haciendo, ni el contexto de tu código... es difícil ayudarte. A ver...
¿id_inal es texto o número?, acláralo
¿auxcantidad_inal es texto o número?, acláralo

Suponiendo que ambos son números (como debe ser) y haciendo las cosas paso a paso:

Código Delphi [-]
var
  fCantidad : double;
  iAlmacen : integer;
begin
  iAlmacen := strtoint(idprod.text);
  
  _DM.consulta1.Close;  // tienes que cerrarlo antes de cambiarle la sentencia que contiene
  _DM.consulta1.SQL.Text:= 'select * From inalmacen Where id_inal='+iAlmacen;
  _DM.consulta1.Open;
    
  fCantidad := _DM.consulta1.FieldByName('cantidad_inal').Value - strtoFloat(cantidad.Text));
  _DM.consulta1.Close;  // lo cerramos en cuanto ya no hace falta

  _DM.consulta2.Close;  // usamos los 2 parámetros ¿por qué sólo 1 y el otro no?
  _DM.consulta2.SQL.Text:= 'update INALMACEN set cantidad_inal=:auxcantidad_inal where id_inal= :auxid_inal';
  _DM.consulta2.ParamByName('auxcantidad_inal').Value := fCantidad;
  _DM.consulta2.ParamByName('auxid_inal').Value := iAlmacen;
  _DM.consulta2.ExecSQL;  // No has dicho qué componentes usas, así que supongo que los IBX
  _DM.consulta2.Transaction.commitretaining;  // Ni idea de las transacciones porque tampoco has contestado a lo que pregunté antes
  _DM.consulta2.Close;
end;
Responder Con Cita