Hola a todos:
Trabajo con D5, firebird 2.1 y componentes FibPlus.
El problema raro es el siguiente y sólo ocurre cuando trato de conectar con una BD Firebird remota: (En local funciona perfectamente)
la ruta de conexion que utilizo es: xxx.xxx.xxx.xxx:C:\Directorio\BaseDeDatos.FDB siendo xxx.xxx.xxx.xxx la ip pública de internet.
El programa es un mantenimiento de clientes que tiene un componente EventAlerter de Fibplus para que cuando haya algún cambio en los datos del cliente actualice automáticamente el DBGrid de presentación. En la Base de datos es un trigger que está así:
Código Delphi
[-]SET TERM ^ ;
CREATE TRIGGER ACTUALIZA_CLIENTES FOR CLIENTES
ACTIVE AFTER INSERT OR UPDATE OR DELETE
POSITION 0
AS
BEGIN
POST_EVENT 'ACTUALIZA_CLIENTES';
END^
SET TERM ; ^
y en el programa, en el OnShow tengo:
Código Delphi
[-]
Eventos1.Events.Add('ACTUALIZA_CLIENTES');
Eventos1.RegisterEvents;
en el OnClose tengo:
Código Delphi
[-]
Eventos1.UnregisterEvents;
y en el OnEventAlerter del componente tengo:
Código Delphi
[-]
if EventName='ACTUALIZA_CLIENTES' then
begin
Clientes.Refresh;
end;
Pues bien, si pongo un "exit" al principio de el OnShow y no registra los eventos, el programa funciona perfectamente, sin embargo, si el programa entra por ahí y los registra, se queda colgado en el CLOSE cuando hace la siguiente consulta de clientes:
Código Delphi
[-]
SQL := 'Select * from Clientes ORDER BY NOMBRE ASCENDING';
Clientes.CLose;
if pFIBTransaction1.InTransaction then pFIBTransaction1.CommitRetaining;
pFIBTransaction1.StartTransaction;
CLIENTES.SelectSQL.Clear;
CLIENTES.SelectSQL.Add(SQL);
CLIENTES.QSelect.ExecQuery;
pFIBtransaction1.CommitRetaining;
Clientes.Open;
Repito, sólo cuando registra los eventos.
¿Alguien puede ayudarme?
Gracias.