![Shocked :shock:](./images/smilies/icon_eek.gif)
REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
Saludos, tengo un sistema en red de atencion al cliente y varios operadores usan un modulo simultáneamente, necesito que si entra una informacion por una estacion, de forma automatica y cada tiempo determinado (segundos), se refresque en cada estaion para mostrar los datos incluidos en las otras estaciones, cuando un usuario carga una data y sale al maestro de datos (un browse), se actualiza, pero se necesita que sin hacer eso, se mantengan todas las pc con el mismo modulo abierto y se muestre la misma data en cada uno, que no haya que refrescar manualmente, espero hacerme entender, no se si con un temporizador que ejecute cada X segundos un refresh a la consulta SQL (query) y al browse...gracias... ![Shocked :shock:](./images/smilies/icon_eek.gif)
![Shocked :shock:](./images/smilies/icon_eek.gif)
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- cmsoft
- Posts: 1297
- Joined: Wed Nov 16, 2005 9:14 pm
- Location: Mercedes - Bs As. Argentina
- Been thanked: 2 times
Re: REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
José Luis:
Yo uso esta forma:
Identifico al ingresar al programa, la placa de red de la terminal que está accediendo
Este código generalmente no cambia (suele hacerlo, pero cambia menos que la IP de la terminal)
Luego tengo una tabla que contiene si debo actualizar esa terminal. Dicha tabla tiene 2 campos, el ID de la terminal, y una variable lógica si debo actualizarla
Ya en el módulo que contiene el Browse y la Query que comparten las terminales hago
Y la función que se encaga de actualizar es
De esta manera, solo se actualiza el browse y la query cuando realmente hay un cambio, y no cada 2 segundos, evitando así el parpadeo del browse
Como extra, tienes que actualizar la tabla cada vez que haces un cambio que deba verse reflejado en las otras terminales que no actualizaron la tabla compartida
Esta es la forma que yo encontré, no se si será la más óptima pero funciona.
Está hecha con la clase TDolphin, no se si la clase nativa de Fivewn tendrá alguna opción más adecuada
Espero te sirva
Yo uso esta forma:
Identifico al ingresar al programa, la placa de red de la terminal que está accediendo
Code: Select all | Expand
oApp:cID := GetNetCardInfo()[1,1]
Este código generalmente no cambia (suele hacerlo, pero cambia menos que la IP de la terminal)
Luego tengo una tabla que contiene si debo actualizar esa terminal. Dicha tabla tiene 2 campos, el ID de la terminal, y una variable lógica si debo actualizarla
Ya en el módulo que contiene el Browse y la Query que comparten las terminales hago
Code: Select all | Expand
REDEFINE XBROWSE oBrw DATASOURCE oQry ......
DEFINE TIMER oTimer INTERVAL 2000 ACTION ActualizarTerminal() OF oWnd1 // Cada 2 segundos
ACTIVATE DIALOG oDlg CENTER NOWAIT
ACTIVATE WINDOW oWnd1 ON INIT oTimer:Activate
Y la función que se encaga de actualizar es
Code: Select all | Expand
STATIC FUNCTION ActualizarTerminal()
IF oServer:Query("SELECT actualizar FROM punto_de_venta WHERE id = "+ClipValue2Sql(oApp:cID)):actualizar
oQry:Refresh()
oBrw:Refresh()
oServer:Execute("UPDATE punto_de_venta SET actualizar = FALSE WHERE id = "+ClipValue2Sql(oApp:cID))
ENDIF
RETURN nil
De esta manera, solo se actualiza el browse y la query cuando realmente hay un cambio, y no cada 2 segundos, evitando así el parpadeo del browse
Como extra, tienes que actualizar la tabla cada vez que haces un cambio que deba verse reflejado en las otras terminales que no actualizaron la tabla compartida
Code: Select all | Expand
// Despues de graba un nuevo registro o modificarlo o eliminarlo, indicas así que las otras terminales deben actualizar
oServer:Execute("UPDATE punto_de_venta SET actualizar= TRUE WHERE id <> "+ClipValue2Sql(oApp:cID))
Esta es la forma que yo encontré, no se si será la más óptima pero funciona.
Está hecha con la clase TDolphin, no se si la clase nativa de Fivewn tendrá alguna opción más adecuada
Espero te sirva
- joseluisysturiz
- Posts: 2064
- Joined: Fri Jan 06, 2006 9:28 pm
- Location: Guatire - Caracas - Venezuela
- Contact:
Re: REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
cmsof probare tu opcion, te comento que la data se agrega muy seguidamente durante el dia, en las noches es que baja un poco el ritmo, y a veces un usuario le dice a otro que cargo X datos, y necseito que el usuario del otro terminal lo vea sin necesidad de actualizar, por eso pense en los de cada X segundos, gracias...
Dios no está muerto...
Gracias a mi Dios ante todo!
Gracias a mi Dios ante todo!
- VictorCasajuana
- Posts: 269
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Has thanked: 1 time
- Contact:
Re: REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
Puedes utilizar sockets para avisar a los terminales cuando se actualiza la data, de esta forma cuando un terminal actualice el resto actualizará el browse inmediatamente, y eso sólo ocurrirá cuando algún terminal actualice, ahorrando muchas consultas innecesarias a la base de datos.
puede que para hacer esto te toque utilizar también el multihilo, pero eso ya dependerá de como quieras aplicar la lógica y el enfoque.
salud!
puede que para hacer esto te toque utilizar también el multihilo, pero eso ya dependerá de como quieras aplicar la lógica y el enfoque.
salud!
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?
- cmsoft
- Posts: 1297
- Joined: Wed Nov 16, 2005 9:14 pm
- Location: Mercedes - Bs As. Argentina
- Been thanked: 2 times
Re: REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
Victor, tienes algún ejemplo simple para mostrar?
Me interesa mucho, porque es verdad, de la forma que yo lo hago hago muchas consultas que el 95% de las veces son innesesarias
Me interesa mucho, porque es verdad, de la forma que yo lo hago hago muchas consultas que el 95% de las veces son innesesarias
- VictorCasajuana
- Posts: 269
- Joined: Wed Mar 28, 2018 4:38 pm
- Location: Vinaròs
- Has thanked: 1 time
- Contact:
Re: REFRESCAR BROWSE Y CONSULTA SQL AUTOMATICAMENTE
cmsoft wrote:Victor, tienes algún ejemplo simple para mostrar?
Me interesa mucho, porque es verdad, de la forma que yo lo hago hago muchas consultas que el 95% de las veces son innesesarias
En \Samples tienes sockcli.prg y sockserv.prg para que puedas testear el funcionamiento de los sockets, a mí me sirvió mucho para poder implementarlos en una aplicación que hice para monitorizar servidores.
están basadas en la clase tsocket que la tienes en \source\classes
al principio cuesta un poco pillar la lógica de cuando el servidor está online, cuando conecta un cliente y como enviar la info, pero cuando la pillas los sockets te dan muchísima potencia.
--------
¿ Y porque no ?
¿ And why not ?
¿ Y porque no ?
¿ And why not ?