[Lazarus-es] actualizar grid automáticamente

Gastón Dall' Oglio gaston.dalloglio en gmail.com
Jue Sep 27 13:53:27 CEST 2012


Hola.

Claro, lo mejor son eventos. Pocos motores de bases de datos tienen este
concepto de eventos, que es una notificación enviada desde el servidor al
cliente.

Por ejemplo, podés disparar un evento en un trigger de una tabla que te
interesa notificar los cambios a los clientes conectados a la base de
datos. El trigger puede ser polivalente (se dispara ante mas de un tipo de
evento), con lo cual te ahorras escribir varios trigger para la misma
funcionalidad. Es mejor darle al al trigger una position alta así se
dispara último, si hay otros trigger sobre la misma tabla. Ejemplo:

CREATE TRIGGER MITABLA_CAMBIO FOR MITABLA ACTIVE
AFTER INSERT OR UPDATE OR DELETE POSITION 10
AS
BEGIN
    POST_EVENT 'mitabla_cambio';
END


Para testear, en Flame Robin fijate que si abrís el menú contextual de una
base de datos, en Advanced -> Monitor Events, podes agregar un evento y
monitorearlo.

Saludos.


El 26 de septiembre de 2012 23:36, Oscar Benitez Carrillo <
obc5005 en yahoo.com.mx> escribió:

> Hola Paola, por qué no pruebas con el uso de eventos en firebird, alguna
> vez hice algo parecido y utilizé los eventos de firebird, la verdad no
> utilizo zeos pero he visto que traen el componente TZIBEventAlerter y
> TZpgEventAlerter que capturan los eventos de la base de datos, para el uso
> de eventos puedes ver aqui:
>
> http://www.intitec.com/varios/Firebird_uso_de_eventos.pdf
>
> http://www.firebird.com.mx/modules/AMS/article.php?storyid=35
>
> Espero te sirva, saludos.
> Oscar Benitez
>
>
> El 26/09/2012 02:33 p.m., Paola Bruccoleri escribió:
>
>  Hola todos..
>>
>> tengo una aplicación (programa1) siempre abierta, donde en un form hay un
>> grid con datos de una tabla de firebird (es una tabla q se maneiene con muy
>> pocos registros x eso no usé una consulta)
>> A su vez hay otro programa (programa2) que carga items en esa misma tabla.
>>
>> Necesito que el gris del programa1 siempre esté mostrando los agregados q
>> hace el programa2
>> ¿La única forma que tengo de que ese grid vea reflejado constantemente
>> esos agregados, es poniendo un timer que haga el refresh de la tabla? o de
>> qué otra manera puede ser?
>> tengo a la tabla, propiedad updateMode = umUpdateChanged
>>
>> Lo mismo me pasa en otro grid q está en ese form...
>>
>> Ahora he probado ejecutando los 2 programas en la misma máquina y el grid
>> no se me actualiza si no salgo del programa1 y vuelvo a entrar.
>>
>> (uso componentes zeos 7, y Lazarus 0.9.31 r30432 FPC 2.5.1
>> i386-win32-win32/win64... si, se que está desactualizado pero no he podido
>> hacerlo)
>>
>> Agradezco cualquier pista
>> muchas gracias
>>
>>
>> _______________________________________________
>> Lazarus-es mailing list
>> Lazarus-es en lists.lazarus.freepascal.org
>> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>>
>>
>
> _______________________________________________
> Lazarus-es mailing list
> Lazarus-es en lists.lazarus.freepascal.org
> http://lists.lazarus.freepascal.org/mailman/listinfo/lazarus-es
>
------------ próxima parte ------------
Se ha borrado un adjunto en formato HTML...
URL: <http://lists.lazarus-ide.org/pipermail/lazarus-es/attachments/20120927/906151af/attachment-0002.html>


More information about the Lazarus-es mailing list