Veo que uno de los datos que agregas es el ID.
Puede que agregues ID=0 y luego los triggers se encarguen de darle el siguiente número al campo.
En ese caso el Dataset habrá dado la instrucción a FB de que guarde el registro y ha guardado una copia en memoria, para no tener que releerlo.
Mientras no cierres esa tabla/trasnaccion/conexión, el Dataset no se enterará de que en la base de datos se han modificado los datos insertados.
Tienes dos opciones si ese es el problema:
1. Generas el ID antes de insertar y lo asignas al campo.
2. Insertas ID=0 y luego refrescas los datos. No recuerdo la instrucción, pero se que existe.
Si es un generador, puedes tener un SQL que ejecute algo como lo siguiente:
Código SQL
[-]SELECT gen_id(NOMBRE_GENERADOR) from RDB$DATABASE
RDB$DATABASE tiene siempre un solo registro.
Con esto y un trigger que haga más o menos esto:
Código SQL
[-]
TRIGGER BEFORE INSERT
begin
if (new.ID is null) or (new.ID =0) then
new.ID = gen_id(NOMBRE_GENERADOR);
...
end