Me gusta la solución de Román, gracias también al resto que me habeis dado pautas interesantes.
Decir que
Es_Cargo es una variable de tipo Boolean que le paso desde el menú y que se analiza en el evento de apertura del formulario para saber cual de las dos opciones se está ejecutando.
Por otra parte como veis el código va en el evento:
Código Delphi
[-]procedure TDmAbon.IBDtsAbonBeforePost(DataSet: TDataSet);
begin
Para que cada vez que se ejecute algún cambio en los datos se actualice el valor.
Un Saludo.