Hola Jere_84.
La verdad que no alcanzo a entender bién la situación como para evaluar una opción mejor. Pero de acuerdo a lo que solicitas en tu mensaje, se me ocurre ir guardando los valores del registro anterior, algo parecido a esto:
Código Delphi
[-]
...
implementation
type
TPrevValues = record
Valor: Currency;
Porce: Currency;
Fijo: Currency;
end;
var
rPrev: TPrevValues;
procedure TForm1.FormCreate(Sender: TObject);
begin
with DataSet do
begin
Open;
rPrev.Valor:= FieldByName('VALOR').AsCurrency;
rPrev.Porce:= FieldByName('PORCENTAJE').AsCurrency;
rPrev.Fijo := FieldByName('IMPORTEFIJO').AsCurrency;
end;
end;
procedure TForm1.DataSet1BeforePost(DataSet: TDataSet);
var
Value: Currency;
begin
with DataSet do
begin
Edit;
Value:= (FieldByName('VALOR').AsCurrency - rPrev.Valor) * rPrev.Porce/100 + rPrev.Fijo;
FieldByName('VALOR').AsCurrency:= Value;
rPrev.Valor:= FieldByName('VALOR').AsCurrency;
rPrev.Porce:= FieldByName('PORCENTAJE').AsCurrency;
rPrev.Fijo := FieldByName('IMPORTEFIJO').AsCurrency;
end;
end;
Espero te de alguna pauta.
Saludos