Ver Mensaje Individual
  #13  
Antiguo 12-04-2012
Avatar de PepeLolo
PepeLolo PepeLolo is offline
Miembro
 
Registrado: jun 2003
Ubicación: Fuenlabrada - Madrid - Espagna
Posts: 265
Reputación: 21
PepeLolo Va por buen camino
Si usas Interbase en cualquiera de sus versiones, tienes el componente "TIBEvents" que recibe las notificaciones que se han producido en la BBDD.
El uso es muy simple, no necesitas "timer" ni nada parecido, solo este componente que espera una notificación de los eventos que tengas registrados en el componente, ejemplo:

En el trigger de la entidad que quieres que realice la notificación, tienes que poner lo siguiente:

Código SQL [-]
CREATE TRIGGER PR_OP_BU1 FOR PR_OP
ACTIVE BEFORE UPDATE POSITION 1
....
.......
    POST_EVENT 'OP_MOD';  /* Avisar a tu aplicación que existen cambios en la entidad para que realice la actualización automáticamente */

y en el componente TIBEvents lo siguiente:
Código Delphi [-]
With IBEventos do
 begin
   AutoRegister := True;
   DataBase := TuBBDD;
   Events -> 'picha para que salga el asistente y añade tu evento.  "OP_MOD" es el nombre del mio.
 end;

Doble click sobre el evento "onEventAlert":

Código Delphi [-]
procedure Tdm.IBEvtBackupEventAlert(Sender: TObject; EventName: String;
  EventCount: Integer; var CancelAlerts: Boolean);
(*
Fecha : 08/09/2011
Autor : JMCDM
Comentario :
     Detectar modificaciones en la OP
*)
begin
   // Evento lanzado por modificación de OP
   if EventName = 'OP_MOD' then                      // 'OP_MOD' Nombre del evento de BBDD que capturas. 
     frMain.Alerta(OP_MOD);                             // Sentencia que quieres ejecutar.
end;

Ya ta eso es todo.
__________________
PepeLolo
El hombre el único virus que mide más de unas cuantas micras
Responder Con Cita