...
implementation
type
TPrevValues = record
Valor: Currency;
Porce: Currency;
Fijo: Currency;
end;
var
vPrev: array[0..7] of TPrevValues;
procedure TForm1.FormCreate(Sender: TObject);
begin
with vPrev[0] do
begin
Valor:= 1;
Porce:= 1;
Fijo := 1;
end;
with DataSet do
try
DisableControls;
while not Eof do
begin
vPrev[RecNo].Valor:= FieldByName('VALOR').AsCurrency;
vPrev[RecNo].Porce:= FieldByName('PORCENTAJE').AsCurrency;
vPrev[RecNo].Fijo := FieldByName('IMPORTEFIJO').AsCurrency;
Next;
end;
First;
finally
EnableControls;
end;
end;
procedure TForm1.DataSetBeforeScroll(DataSet: TDataSet);
begin
with vPrev[DataSet.RecNo] do
begin
Valor:= DataSet.FieldByName('VALOR').AsCurrency;
Porce:= DataSet.FieldByName('PORCENTAJE').AsCurrency;
Fijo := DataSet.FieldByName('IMPORTEFIJO').AsCurrency;
end;
end;
procedure TForm1.DataSetBeforePost(DataSet: TDataSet);
var
Value: Currency;
ix: Integer;
begin
with DataSet do
begin
ix := DataSet.RecNo-1;
if ix = 0 then ix:= 7;
Value:= (FieldByName('VALOR').AsCurrency - vPrev[ix].Valor) *
vPrev[ix].Porce/100 + vPrev[ix].Fijo;
Edit;
FieldByName('VALOR').AsCurrency:= Value;
end;
end;