Por lo que entendí de tu problema. te diría lo siguiente:
1. Cada vez que hagas una entrada (EXE E) inmediatamente debes hacer un commitretaining a tu base de datos, esto con el fin de efectivamente escribir los cambios de tus registros en la base de datos (escribir físicamente el registro), para que así otros programas o procesos que trabajan con la misma base de datos tengan acceso a la nueva información.
2. Como veo que estás utilizando los EVENTOS dentro de la base de datos (IBEvents), pues es así como se debe hacer, es decir, al momento de crear un nuevo registro, o actualizar alguno, programas el evento para que se dispare e informe a las demás aplicaciones. una vez disparado dicho evento como por ejemplo al momento de ingresar un nuevo registro, entonces en tu otro programa (EXE S), debes capturar dicho evento y justo ahí debes cerrar y abrir nuevamente tu consulta para que veas refledos los nuevos datos.
PERO RECUERDA debes hacer un
IBTransaction1.CommitRetaining en tu (EXE E ) justo después de haber ingresado tus nuevos datos.
