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;
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;
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.