Como habíamos visto en estos artículos:

Los eventos del Firebird

Usando los eventos del Firebird en Visual FoxPro

 

usar eventos puede resultarnos muy útil porque nos permite saber lo que está ocurriendo en la Base de Datos al instante, o sea que no es necesario un SELECT para enterarnos de lo que ocurre en ella. Puedes usar esta herramienta para avisarle al usuario en el mismo instante en que ocurrió el hecho que estás monitoreando, no estás dependiendo de que él se acuerde de revisar un informe para enterarse.

Para mostrar mucho más claramente el concepto creé una Base de Datos llamada DEMO_EVENTOS.FDB, le agregué una tabla llamada CUENTAS y a esa tabla un trigger “Before Insert or Update” con el siguiente contenido:

Listado 1.

CREATE TRIGGER CUENTAS_BIU FOR CUENTAS
               ACTIVE BEFORE INSERT OR UPDATE
               POSITION 1
AS
   DECLARE VARIABLE lnTemp INTEGER;
BEGIN

   IF (NEW.CUE_SALDOX < 0) THEN
      SELECT
         xp_messenger('Saldo negativo', '*', 'EVENTO1')
      FROM
         RDB$DATABASE
      INTO
         :lnTemp;

   IF (NEW.CUE_SALDOX > 1000000) THEN
      SELECT
         xp_messenger('Saldo demasiado alto. Verifícalo', '*', 'EVENTO1')
      FROM
         RDB$DATABASE
      INTO
         :lnTemp;

END;

luego hice un pequeño programita en Visual FoxPro para monitorear los eventos de cualquier Base de Datos:

EVENTOS1

Captura 1. Si haces clic en la imagen la verás más grande

Debes especificar el nombre de la Base de Datos (la de este ejemplo es: DEMO_EVENTOS.FDB) y escribir el nombre del usuario y su password. Luego debes hacer clic sobre el botón “Conectarse”. Si todo está ok entonces verás un mensaje informándotelo. De la misma manera, si la conexión no pudo realizarse verás un mensaje que te lo indicará.

Después de conectarte exitosamente debes hacer clic sobre el botón “Empezar” y desde ese preciso momento estarás monitoreando un trigger “Before Insert or Update” de la tabla CUENTAS. O sea que siempre antes de insertar o modificar una fila de esa tabla el trigger se disparará.

En ese trigger se monitorean dos eventos:

  1. Si el valor de la columna CUE_SALDOX es menor que cero
  2. Si el valor de la columna CUE_SALDOX es mayor que 1.000.000

En ambos casos se envía un mensaje al programa Visual FoxPro el cual recibe ese mensaje y lo muestra al usuario. Para demostrarlo, le agregué una fila a la tabla CUENTAS y a la columna CUE_SALDOX le asigné el valor -38.000

EVENTOS2

Captura 2. Si haces clic en la imagen la verás más grande

 y en ese mismo instante el programa me mostró:

EVENTOS3

Captura 3. Si haces clic en la imagen la verás más grande

A continuación agregué otra fila, ésta con un saldo mayor a 1.000.000, como puedes ver aquí:

EVENTOS4

Captura 4. Si haces clic en la imagen la verás más grande

y al instante el programa me mostró este mensaje:

EVENTOS5

Captura 5. Si haces clic en la imagen la verás más grande

O sea que todo funcionó perfectamente, lo cual significa que cada vez que en la columna CUE_SALDOX se coloque un valor negativo o un valor mayor que 1.000.000 el programa recibirá un mensaje indicándoselo.

Puedes descargar el archivo DEMOEVENTOS.ZIP, el cual contiene a la Base de Datos DEMO_EVENTOS.FDB, el código fuente en Visual FoxPro y el archivo .EXE correspondiente desde aquí:

DEMOEVENTOS.ZIP

¿Cómo usarlo?

  1. Usando este programa conéctate a la Base de Datos llamada DEMO_EVENTOS.FDB
  2. Haz clic sobre el botón “Empezar”
  3. Sin salir del programa inserta o modifica una fila de la tabla CUENTAS, poniendo en la columna CUE_SALDOX un valor menor que cero o un valor mayor que 1.000.000
  4. El programa te mostrará un mensaje informándote de lo que aconteció

Desde luego que puedes usar este programa para monitorear cualquier evento de cualquier Base de Datos, lo de arriba es solamente un ejemplo.

Artículos relacionados:

Los eventos del Firebird

Usando los eventos del Firebird en Visual FoxPro

El índice del blog Firebird21

El foro del blog Firebird21