Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   IBEvents registra ultimo evento (dispara todos) (https://www.clubdelphi.com/foros/showthread.php?t=62357)

Kipow 18-12-2008 13:00:11

IBEvents registra ultimo evento (dispara todos)
 
Saludos amigos foreros

Tengo un problema con los ibevents utilizo
Delphi 2009 Update 2,
Firebird 2.1.1 32bits
Vista 64bits.

El entorno es el siguiente:

Tengo en mi formulario un componente TIBEvents al cual le asigno corretamente las propiedades que necesito siendo asi la base de datos y 3 eventos distintos. Al abrir el formulario los registro con

Código Delphi [-]
IBEvents1.Registered := True;


y al cerrar el formulario pues hago lo contrario

Código Delphi [-]
IBEvents1.Registered := False;


El problema es que solamente me registra el ultimo evento de la lista y obvio que el evento OnEventAlert solamente se dispara al con este ultimo.
peeero se dispara para los 3 eventos de la lista. algo raro pero no doy que puede ser me imagino que algun tipo de incompatibilidad de las IBX para con el Firebird pero no se, acabo de instalar las Zeos para realizar las pruebas a ver como me va.

Saludos

Lepe 18-12-2008 13:59:33

Al menos con los MDO me pasaba lo mismo. Así que probablemente sea un problema de los IBX.

La solución fué añadirlos en tiempo de ejecución y olvidarme de ponerlos en tiempo de diseño:
Código Delphi [-]
ibevents.add(const_nombreEvento);
ibevents.add(const_nombreEvento2);
ibevents.Registered := True;

Saludos.

Kipow 18-12-2008 20:21:27

Gracias por contestar Lepe, pues si ya he probado esa forma de asignarlos e igual solamente me registra el ultimo y me dispara todos jaja, por el momento he optado por crear ibevents de forma dinamica para cada evento (ya se que es chapuz pero tengo que entregar el proyecto de urgencia) lo raro es que acaban de actualizar el delphi y no se ha corregido este bug (si es que lo fuera).

Lepe 18-12-2008 21:38:40

Hay algo que no entiendo en tu mensaje.

El ibevents lanza el evento OnEvents para todas las alertas que tenga registradas, en dicho evento tiene el parámetro EventName (hablo de MDO pero en Interbase debe ser igualito) que te indica el evento que se ha disparado realmente.

Supongo que usaras un if EventName = evento1 then... else if EventName = evento2 ... ¿no?

Saludos

Kipow 18-12-2008 22:25:09

Aclarando, yo registro 3 eventos distintos ya sea en runtime o designtime. al parecer solo queda registrado el ultimo y al lanzar ese evento el procedimiento OnEventAlert se dispara 3 veces 1 para cada evento de los que teoricamente registre. no se si me explico. los eventos si los identifico con el parametro "eventname".

Lepe 19-12-2008 20:23:29

siendo benévolo.... usas IBX con FB 2.1, en principio no se garantiza la compatibilidad...pero ya digo, siendo benévolo :(.

Saludos

Gallosuarez 23-12-2008 17:41:37

Eventos y commmit
 
He estado utilizando los eventos de Firebird, lo que he notado es que los eventos se disparan despues de un commit. Creo que por ahí podría estar la explicación a tu problema. Ejemplo: se tiene un evento que se dispara despues de una inserción y si haces tres inserciones, pues los eventos se registrarán en la aplicación despues de que hayas hecho un commit, es decir, se dispararía tres veces despues de un solo commit. Si lo que quieres es que inmediatamente se dispare el evento despues de la primera inserción (o cualesquiera que se la condición para que se dispare el evento), debes de hacer un commit inmediatamente, me explico?

Bueno, espero que de algo sirva esto. No dejes de contarnos como solucionaste el problema. :D

Saludos,
Gerardo Suárez

Kipow 30-12-2008 08:14:20

Gracias por la intencion pero si efectivamente es un bug de los ibevents. pues nada que lo solucione a mi manera ibevent * evento.


La franja horaria es GMT +2. Ahora son las 04:31:50.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi