Cita:
Empezado por ecfisa
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
|
Esta opción anda muy bien siempre y cuando el usuario vaya cargando los registro en el orden 1, 2, 3, 4... Lo malo es si el usuario edita el registro 1 luego pasa al 3 y luego al 5. Porque si el usuario no mantiene un orden lógico se asignarían los datos de manera errónea. Digamos que si el usuario edita el registro 2 y luego pasa al registro 4 por mas que esto ocurra, se deben asignar los valores en el registro 3. Esta es la parte complicada, tener en cuenta que el usuario no mantenga el orden de carga. Si el usuario por ejemplo edita el registro 3 antes que cualquiera otro, como hago para tener cargados en el record los valores del registro 2 sin desplazarme?