PDA

Ver la Versión Completa : Actuar ante cambios en la BD


jsc
25-08-2004, 17:05:12
Hola Foro,
Podría generar algún evento (mostrar un mensaje, hacer que suene un ruido...) al modificar algún registro, insertar... en la base de datos ?
Tengo tres aplicaciones desarrolladas en Delphi 5.0 que atacan a una base de datos de Interbase en un Pc servidor de la Red.Cuando alguien haría un UPDATE, INSERT... podría llevarse a cabo lo que indicaba arriba ? Que a los otros pc's que tienen corriendo la aplicación se les generara el evento que fuera para que se dieran cuenta que se han modificado, añadido datos en la base de datos?
La cuestión es tener que actualizar los datos de la aplicación cada cierto tiempo manualmente. Si conseguiría hacer ver a la aplicación que se han producido cambios, un evento a programar en la aplicación sería el refrescar los datos, con lo que supongo lo haría automáticamente y el usuario no tendría que andar cada poco tiempo refrescando.
He visto que en los componentes de Interbase, quizá podría hacer uso de el IBEventAlert, pero la verdad he tratado de averiguar cómo funciona y no consigo nada.
Espero podais ayudarme a conseguir esto.
Gracias de antemano

marto
25-08-2004, 17:17:57
Wop!

Andas bien encaminado;) Hace tiempo que no toco IB y no tengo la documentación a mano. La idea es que tienes que crear un evento en la base de datos. Al crearlo le indicas cuando se tiene que lanzar (po ejemplo despues de un UPDATE de la tabla de clientes). Una vez creado, con el moponente IBEventAlert lo que haces es registrarte en una especie de cola en el servidor pa un evento en concreto. Con esto lo que consigues, precisamente, es que el servidor "te avise" cuando se procuce ese evento.

Mirate la documentación de IB, es bastante sencillo ;)

jsc
27-08-2004, 12:24:30
Gracias por todo.He mirado la documentacion como me indicabas y he llegado a crear un trigger.Aparentemente, desde la aplicación que inserta el registro, parece que el efecto del trigger funciona.Es decir, es como si a la aplicación delphi que inserta un registro, el servidor IB le devolviera el parámetro, por lo tanto, en esa aplicación puede tratarse el evento OnEventAlert.
He probado a insertar un registro desde otra aplicación delphi (residente en otro pc al mio) para ver si posteriormente,tratanto el evento OnEventAlert (pongo código para actualizar los datos) podría ver los datos en mi pc. En definitiva, si puedo ver en la aplicacion delphi de mi pc, los datos introducidos por otra aplicacion delphi en otro pc de la red.
Espero que me haya explicado y me podais ayudar.
Es muy interesante que pudiera llevarlo a cavo.
Gracias

marto
27-08-2004, 13:06:26
Wop!

Vamos a ver, si tu creas el evento en el servidor y lo disparas, por ejemplo, en el afterinsert de la tabla clientes, solo tienes que registrar tu aplicación delphi para que escuche ese evento. Una vez hecho eso el IBEvent te avisará siempre que se haga una inserción desde cuaquier punto a esa tabla.
Lo que no recuerdo (pero parece lógico) es si el aviso se dispara cuando se confirma la transacción. Digo que parece lógico porque no sirve de nada que sepas que se ha hecho una inserción si la transacción que la ha hecho no ha finalizado, ya que no vas a poder ver los cambios.