Como hemos visto en este artículo:

Los eventos del Firebird

Firebird tiene algo muy bueno conocido como eventos, que nos permiten conocer al instante cuando algo que nos interesa ocurrió en la Base de Datos.

¿Cómo se pueden aprovechar los eventos desde Visual FoxPro?

Si programas en Visual FoxPro tienes una gran ventaja, además de los eventos normales también puedes usar unos eventos mejorados.

Aviso: No he probado esta técnica con otros lenguajes de programación, quizás funcione, quizás no, podrías hacer la prueba y si me informas de los resultados obtenidos, mucho mejor.

¿Qué se necesita para usar eventos del Firebird en Visual FoxPro?

1. Descargar este archivo:

http://www.mediafire.com/download/s2vj23plswx3wca/xp_messenger_fb.zip

2. Crear una carpeta
3. Descomprimir el archivo que descargaste (xp_messenger_fb.zip) en la carpeta recién creada
4. En la carpeta SERVER\FIREBIRD\ encontrarás un archivo cuyo nombre es  fb_messenger.dll. Copia ese archivo fb_messenger.dll en la carpeta UDF\ del Firebird, por ejemplo en: C:\Archivos de Programa\Firebird\Firebird_2_5\UDF\
5. En la carpeta CLIENT\ encontrarás un archivo llamado Setup.msi. Debes instalar ese programa en cada computadora que recibirá los eventos.
6. En tu Base de Datos declara la función externa xp_messenger en esta forma:

DECLARE EXTERNAL FUNCTION xp_messenger
        CSTRING(255), CSTRING(255), CSTRING(255)
        RETURNS INTEGER BY VALUE
        ENTRY_POINT 'fnfb_messenger' MODULE_NAME 'fb_messenger.dll';

7. En un stored procedure o en un trigger escribe:

SELECT
   XP_MESSENGER('Mi mensaje', 'Mi host', 'Mi slot')
FROM
   RDB$DATABASE;

‘Mi mensaje’ es el mensaje que deseas enviarle al Cliente

‘Mi host’ es la computadora destino. Puedes especificar el nombre del Host, el IP del Host, el nombre del Grupo de Trabajo, el nombre del Dominio o el asterisco (*). Si usas un asterisco el mensaje se enviará a todos los dominios y grupos de trabajo.

‘Mi slot’ es el nombre del slot. Por defecto su nombre es ‘events’, pero puedes usar cualquier nombre que quieras: ‘prueba’, ‘evento1’, ‘Productos’, etc.

Ejemplos:

SELECT
   XP_MESSENGER('Prueba Nº 1', 'localhost', 'evento1')
FROM
   RDB$DATABASE;

SELECT
   XP_MESSENGER('Prueba Nº 2', 'WALTER-PC', 'evento1')
FROM
   RDB$DATABASE;

SELECT
   XP_MESSENGER('Prueba Nº 3', '*', 'Productos')
FROM
   RDB$DATABASE;

El primer SELECT enviará el mensaje ‘Prueba Nº 1’ a la computadora local.

El segundo SELECT enviará el mensaje ‘Prueba Nº 2’ a la computadora WALTER-PC.

El tercer SELECT enviará el mensaje ‘Prueba Nº 3’ a todas las computadoras.

Importante:

Solamente funciona si el Servidor está instalado en Windows

Aviso:

Si alguna vez deseas desinstalar esta función debes conectarte a tu Base de Datos y escribir:

DROP EXTERNAL FUNCTION xp_messenger;

Artículos relacionados:

Los eventos del Firebird

El índice del blog Firebird21

El foro del blog Firebird21

Anuncios