|
Muchas gracias por contestar. En efecto lo que se busca es actualizar el valor de varios campos.
Ejemplo:
"Cantidad" "Precio" "Importe"
Cuando Actualizo "Cantidad", en el OnValidate, llamo a una función (CalculaPrecPAR) dentro del DataModule que realiza un cálculo en cascada de los datos que se ven afectados en la misma tabla del mismo formulario:
procedure TDM.CalculaPrecPAR();
begin
//Calcula PrecioCoste=(Precio*(%MA))*(%CI)
TaPTOPAR.FieldByName('PTOPAR_PREC2').ReadOnly := false;
TaPTOPAR.FieldValues['PTOPAR_PREC2'] := ((TaPTOPAR.FieldValues['PTOPAR_PREC'] *
(1+(TaPTOPAR.FieldValues['PTOPAR_MA']/100))) *
(1+(TaPTOPAR.FieldValues['PTOPAR_CI']/100)));
TaPTOPAR.FieldByName('PTOPAR_PREC2').ReadOnly := true;
//Calcula ImporteCoste=Cantidad x Precio2
TaPTOPAR.FieldByName('PTOPAR_IMP').ReadOnly := false;
TaPTOPAR.FieldValues['PTOPAR_IMP'] := TaPTOPAR.FieldValues['PTOPAR_CAN'] *
TaPTOPAR.FieldValues['PTOPAR_PREC2'];
TaPTOPAR.FieldByName('PTOPAR_IMP').ReadOnly := true;
//Calcula ImporteOferta=ImporteCoste x K
TaPTOPAR.FieldByName('PTOPAR_OFER').ReadOnly := false;
TaPTOPAR.FieldValues['PTOPAR_OFER'] := TaPTOPAR.FieldValues['PTOPAR_IMP'] *
TaPTOPAR.FieldValues['PTOPAR_K'];
TaPTOPAR.FieldByName('PTOPAR_OFER').ReadOnly := true;
//Calcula PrecioOferta=PrecioCoste x K
TaPTOPAR.FieldByName('PTOPAR_POFER').ReadOnly := false;
TaPTOPAR.FieldValues['PTOPAR_POFER'] := TaPTOPAR.FieldValues['PTOPAR_PREC2'] *
TaPTOPAR.FieldValues['PTOPAR_K'];
TaPTOPAR.FieldByName('PTOPAR_POFER').ReadOnly := true;
end;
Muchas Gracias.
|