Ver Mensaje Individual
  #57  
Antiguo 08-09-2011
negrokau negrokau is offline
Miembro
NULL
 
Registrado: abr 2011
Posts: 210
Reputación: 16
negrokau Va por buen camino
Talking

Cita:
Empezado por defcon1_es Ver Mensaje
Te actualiza sólo 1 registro porque no recorres la query que trae los datos.
Yo usaría 2 querys, 1 para recorrer la tabla y otra para actualizar los datos.
La primera tendría como código SQL "fijo" lo siguiente:
Código SQL [-]
SELECT CANTIDAD FROM DETALLE_FACTURAS WHERE (COD_FACT=:ParCOD_FACT) AND (CODIGO = :ParCODIGO)
NOTA: Si solamente te hace falta el campo CANTIDAD, no hagas un SELECT *


y la segunda tendría este código
Código SQL [-]
UPDATE STOCK SET CANTIDAD=CANTIDAD-:ParCANTIDAD WHERE (COD_STOCK= :ParCODIGO)

Y en delphi
Código Delphi [-]
procedure TF_FACTURACION.GUARDARClick(Sender: TObject); 
begin 
DM.Q_FACTURACION.Post; 
DM.Transaction.CommitRetaining;
//////actualiza cantidad////////////////  
DM.CONSULTA.CLOSE;   
DM.CONSULTA.ParamByName('ParCOD_FACT').AsString := COD_FACT.Text;   
DM.CONSULTA.ParamByName('ParCODIGO').AsString := CODIGO2.Text;   
DM.CONSULTA.Open;    
while not (DM.CONSULTA.Eof) do   
begin  
DM.CONSULTA2.CLOSE;      
DM.CONSULTA2.ParamByName('ParCODIGO').AsString := CODIGO2.Text;     
DM.CONSULTA2.ParamByName('ParCANTIDAD').AsFloat := DM.CONSULTA.FieldByName('CANTIDAD').AsFloat;
DM.CONSULTA2.ExecSQL; 
DM.CONSULTA.Next;    
end;  
end;
yo segui este ejemplo, y como les vengo diciendo solo me actualiza el 1º registro, y como dice oscarac:

cuando cod_remi = 1 entonce tiene 4 registros...
entonces si deberia funcionar el bucle while not eof

me parece raro...
si tiene 4 registros entonces debe pasar 4 veces
estan bien a
sociados los datasource?
no sera que por ahi... tienes nu datasource en el grid que no es el correcto?



cod_remi =1 tiene 4 registro, quiero que me actualize esos 4 registros,
ya se que muestra solo 1 registro como esta mas arriba, como puedo hacer
que me actualize los 4 registro si es que esta mal lo que estoy haciendo?

Última edición por negrokau fecha: 08-09-2011 a las 22:00:05.
Responder Con Cita