Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Ayuda con Evento Zeos (https://www.clubdelphi.com/foros/showthread.php?t=72856)

XcamX 15-03-2011 20:28:57

Ayuda con Evento Zeos
 
Hola, les pido disculpas si este hilo no va aqui.
Me gustaria que alguien me enseñe a manejar un evento de ZEOS, estoy programando en delphi 6 con base de datos colgada en un servidor, lo que quiero hacer es que cada vez que alguien grabe un registro en dicha base me salte un mensaje en el programa, no se si esta muy claro. Desde ya muchas gracias
Atte.

roman 15-03-2011 20:38:26

No creo que esto sea un problema en sí de ZEOS pues depende de que el motor de datos en sí mande alguna señal a los clientes. Algunos servidores, como Interbase y Firebird manejan eventos para cambios en los datos y los clientes pueden subscribirse a ellos para ser notificados cuando ocurran. Pero desconozco si ZEOS tiene un componente para este tipo de sucesos.

// Saludos

XcamX 15-03-2011 20:52:23

como capturo la señal, el motor de base de datos es mysql.

roman 15-03-2011 21:18:07

Lo único que se me ocurre es que los clientes revisen cada n segundos la o las tablas que deseas monitorear.

No sé, estoy pensando en voz alta, pero quizá pudieras tener una tabla especial con tres campos:

monitor=(id, tabla,hora)

id sería un campo autoinc
tabla el nombre de la tabla donde se ha producido una inserción
hora la hora en que se produjo dicha inserción.

En cada tabla que quieras monitorear tendrías que agregar un disparador (trigger) after insert en el cual registras el nombre de la tabla y la hora en la tabla monitor.

Entonces, cada cliente, como dije, revisaría cada tanto dicha tabla con una consulta de este estilo:

Código SQL [-]
select * from monitor
where ID > :OLD_ID

donde en el parámetro OLD_ID pondrías el último ID que hayas leído (y que tendrías que actualizar cada vez que haces la consulta anterior).

De esta forma, como resultado de la consulta tendrías una lista de tablas y horas de las últimas inserciones.

Sí, ya sé que suena algo compicado y artesanal, pero de momento es lo único que se me ocurre.

// Saludos

XcamX 15-03-2011 21:30:48

voy a intentarlo hasta ver como lo resuelvo, te doy mil gracias por la ayuda y por tu tiempo

Saludos

Delphius 15-03-2011 23:52:03

Hola,

Supuestamente MySQL SI tiene algo equivalente a los eventos de Firebird e Interbase, recuerdo que me comentaron fue añadido en la versión 5 pero puedo estar equivocado.

Ahora respecto a Zeos, tengo entendido también que cuenta con un componente para ello, aunque está diseñado para Firebird y se estaba analizando la posibilidad de hacerlo genérico: ZIBEventAlerter. Sería cuestión de que revises la documentación de Zeos para saber más al respecto.

Sino queda la opción que comenta Roman: disparar la consulta cada cierta cantidad de tiempo.

Saludos,

roman 16-03-2011 15:48:15

Estuve revisando los eventos de MySQL pero no parecen ser lo mismo. En MySQL, más que eventos son calendarizaciones, que cada x tiempo ejecutan la rutina que uno programe.}

// Saludos


La franja horaria es GMT +2. Ahora son las 11:35:59.

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