[Lazarus-es] actualizar grid automáticamente

Oscar Benitez Carrillo obc5005 en yahoo.com.mx
Jue Sep 27 16:36:59 CEST 2012


Paola, el componente ZConnection tiene una propiedad TransacIsolation, 
¿Ya probaste ponerla en ReadCommited? aunque yo he utilizado otros 
componentes, en el componente Transaction he tenido que poner en 
opciones->ReadCommited=True para lograr lo que tu quieres.

Saludos
Oscar Benitez

El 27/09/2012 08:53 a.m., Rubén Ibáñez escribió:
>
>
> El 27 de septiembre de 2012 09:35, Paola Bruccoleri 
> <pbruccoleri en adinet.com.uy <mailto:pbruccoleri en adinet.com.uy>> escribió:
>
>     Hola todos..
>     muchas gracias por las sugerencias. Antes de probar con un timer,
>     comencé a estudiar esto de los eventos. Es muy sencillo y claro el
>     concepto.
>     Aparentemente me funciona porque en el ZIBEventAlerter1EventAlert,
>     donde hago los refresh coloqué un showmessage a ver si se disparaba.
>     Y lo hace tanto si agrego registros desde programa1 (donde están
>     los grids) como de programa2.. PERO... los refresh no refrescan
>     nada si agrego registros desde el programa2, por más que el evento
>     se disparó.
>
>     (Aclaro q el componente ZIBEventAlerter lo coloqué en el form del
>     programa1 donde están los grids)
>
>     ya probé hacer:
>     tbl.refresh
>     dbgrid.refresh
>
>     y también:
>     tbl.close;
>     tbl.open;
>     dbgrid.refresh (el dbgrid q muestra esa tabla)
>
>     (también tengo una consulta q debo actualizar, q no la puse allí
>     para simplificar, y es la misma cosa)
>
>     y nada!
>     solo aparece el cambio si cierro el programa y lo vuelvo a abrir....
>
>
>
>
>
>     El 27/09/2012 08:53 a.m., Gastón Dall' Oglio escribió:
>>     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 <mailto: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)
>>
>
>     Hola Paola:
>
> ¿Hay un tbl.Post? ¿Lo has probado?
> Rubén.
>
>     _______________________________________________
>     Lazarus-es mailing list
>     Lazarus-es en lists.lazarus.freepascal.org
>     <mailto: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/ae8239db/attachment-0002.html>


More information about the Lazarus-es mailing list