Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Buscar Temas de Hoy Marcar Foros Como Leídos

 
 
Herramientas Buscar en Tema Desplegado
  #8  
Antiguo 12-02-2004
Avatar de StartKill
StartKill StartKill is offline
Miembro
 
Registrado: ene 2004
Posts: 299
Poder: 23
StartKill Va por buen camino
Hola, subzero....

No soy buen profesor pero tratare de explicarme...

Lo trigger se desencadenan 'ejecutan' en el servidor cuando haces un cambio en las tablas de tu base de datos como es añadir, modificar, eliminar.

La idea es que el servidor envie un mensaje a los clientes cuando suceda dicho cambio, hay dos oportunidades que son: "un antes de" y "un despues de" (before/after), la idea es utilizar un despues de la actividad.

CREATE TRIGGER DPTO_AI FOR DPTO ACTIVE
AFTER DELETE POSITION 0
AS
BEGIN
POST_EVENT 'DEL_DPTO';
END


Estas lineas envian un mensaje a los clientes indicando que hay han borrado un registro en la tabla "dpto", la frase 'DEL_DPTO' es arbitraria dale el nombre que te guste(que sena descriptivos), en los clientes debe haber un componente "IBEvents" y tenes la oportunidad de saber que paso en el servidor de acuerdo al mensaje que enviaste.

En tu programa debes registrar los eventos que vas ha capturar, lo puedes hacer en el momento de mostrar tu formulario.

procedure TFrmRefe.FormShow(Sender: TObject);
begin
IBEvents1.Events.Add('DEL_DPTO');
IBEvents1.Events.Add('UPD_DPTO');
IBEvents1.Events.Add('INS_DPTO');
IBEvents1.RegisterEvents;
end;


No olvides que cuando termines desactivar los eventos

procedure TFrmRefe.FormDeactivate(Sender: TObject);
begin
IBEvents1.UnRegisterEvents;
end;


Bueno, parece que vamos bien... pero no queda alli, hay que atrapar las "señales" del servidor, como?,

Facil... en tu componente IBEvents hay un evento "OnEventAlert", alli hay un parametro "EventName" donde tendras el nombre arbitrario que pusiste (POST_EVENT 'DEL_DPTO'),

Alli elijes la accion a realizar, refrescas, avisas un cambio... lo que gustes, personalmente en mi formulario de tablas referenciales tengo un boton que dice refrescar y cuando sucede un evento este boton cambia de color del caption a ROJO y el usuario sabe que hay un cambio y necesita refrescar.;


procedure TFrmRefe.IBEvents1EventAlert(Sender: TObject;
EventName: String; EventCount: Integer; var CancelAlerts: Boolean);
begin
BitBtn1.Font.Color:=clRed;
end;


Ah, me olvidaba este evento tambien se ejecutara cuando hagas el cambio en el mismo cliente... osea: En un cliente haces un cambio y es normal que los demas clientes sepan lo que ha pasado "pintando el boton rojo" pero el cliente que hizo la modificacion tambien se pinta el boton, entonces debes controlar esa chispita, como?, tarea para Ud.

Bueno, espero haber sido de ayuda....

Cuentame como te fue, estamos para ayudarnos..

Your Friend

StartKill
Lima-Perú
Responder Con Cita
 


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 20:16:36.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi