Ver Mensaje Individual
  #2  
Antiguo 30-01-2009
Avatar de Neftali [Germán.Estévez]
Neftali [Germán.Estévez] Neftali [Germán.Estévez] is offline
[becario]
 
Registrado: jul 2004
Ubicación: Barcelona - España
Posts: 18.289
Reputación: 10
Neftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en brutoNeftali [Germán.Estévez] Es un diamante en bruto
Si lo haces registro a registro tendrás que realizar un recorrido por todos los registros de la tabla e ir cambiando de uno en uno. Algo así:

Código Delphi [-]
ArchCaja.Open;
// Recorrido hasta llegar al final.
while not (ArchCaja.EOF) do begin
  ArchCaja.IndexName := 'PorFecha';
  ArchCaja.CancelRange;  ArchCaja.SetRange([desdeFr.date],[hastaFr.date]);
  ArchCaja.Edit;
  ArchCaja.FieldByName('Valor').AsInteger := 
    ArchCaja.FieldByName('Valor').AsInteger - 100;
  ArchCaja.Post; 
  // Siguiente
  ArchCaja.Next;
end;

Otra opción más eficiente es utilizar una consulta SQL; La lanzar y te hará la actualización de todos los registros. Bastante más rápido dependiendo del número de registros.
Crea un Query y asigna a la propiedad SQL:

Código SQL [-]
  Query := 'UPDATE tabla SET Valor = (Valor - 100)';
  Query.Exec;

Depende de los componentes que esté utilizando puede variar la sintaxis, pero es para que te hagas una idea.
Con esta sólo instrucción te cambiará de una pasada el valor para todos los registros de la tabla.

Un saludo.
__________________
Germán Estévez => Web/Blog
Guía de estilo, Guía alternativa
Utiliza TAG's en tus mensajes.
Contactar con el Clubdelphi

P.D: Más tiempo dedicado a la pregunta=Mejores respuestas.
Responder Con Cita