PDA

Ver la Versión Completa : Actualizar automaticamente los datos en SQL Server


manuel Suarez
07-06-2005, 03:03:13
Hola.

Resulta que estoy trabajando con delphi 7 y SQL Server 2000, utilizo ADOs para la conexion, es una aplicacion cliente servidor de multiples usuarios conectados en red.

Muestro la informacion de las tablas en listviews, pero quisera saber como le puedo hacer para que la informacion se actiualice automaticamente, es decir, que cuando un usuario modifique la informacion de algun registro, ésta se actualice en los listview de los demas usuarios conectados, para que trabajen con la información actualizada y no con informacion falsa...

Se me estaba ocurriendo hacerlo con un timer, que cada cierto tiempo realizara la consulta de nuevo de todas las tablas, pero creo que eso no es lo correcto, porque consumiria mucho trafico en la red.. si alguien sabe de algun metodo para resolver este problema se lo agradecería muchisimo.

Saludos...

Neftali [Germán.Estévez]
07-06-2005, 09:46:28
...Muestro la informacion de las tablas en listviews, pero quisera saber como le puedo hacer para que la informacion se actiualice automaticamente...
No acabo de entender porque haces eso (lo de mostrar la información en ListViews), teniendo DBGrids que son específicos para ello, de todas formas esa no es la pregunta, no?
Una alternativa a la que comentas (del timer) y que minimiza el tráfico de red es tener una tabla de actualizaciones (TABLA_S), es decir, una tabla en la que guardas:
(1) Nombre de la tabla
(2) Hora de la última actualización.
(en ésta tabla existirá un registro por cada tabla de tu aplicación).

En cada aplicación además debes tener ésta tabla replicada (por ejemplo al entrar la cargas en memoria), TABLA_L.

Cuando alguien añade/borra/modifica a una tabla un registro, además actualiza ésta con la hora (hh:mm:ss:zzzz) de la actualización.
El resto, con el Timer lo que hacen es comprobar si el valor (hh:mm:ss:zzzz) en la tabla TABLA_S y el de la TABLA_L para un nombre de tabla es el mismo. Si es diferente debes releer los datos.

Minimiza el tráfico de red, ya que cada x tiempo sólo lees un registro de la TABLA_S (con dos campos) y sólo actualizas la tabla en cuestión cuando ha habido cambios.

Personalmente no me acaba de convencer, pero, como mínimo es una mejora...