PDA

Ver la Versión Completa : Actualizar Query-Dbgrid


Walter
04-06-2003, 01:27:51
Hola a todos:

Tengo en un programa en red un Dbgrid con el resultado de una consulta efectuada en un Query y desde otra maquina efectuan un alta, baja o modificación que ataca a un Table (cuyo archivo asociado es el mismo del Query). ¿Que propiedades tendría que modificar para que automaticamente esta modificación hecha en el archivo actualice al query (sin tener que cerrarlo y volver a abrirlo) para poder ver en el Dbgrid el resultado real de la consulta (desde todas las maquinas)?.

Gracias por leer mi pregunta.

jachguate
04-06-2003, 03:09:17
Sin volver a abrir el query, está dificil, ya que este componente del BDE (que supongo que eso utilizas) no tiene un método Refresh.

Tampoco indicas que base de datos estás utilizando, así que está algo dificil ayudarte.

Si es Interbase, esta tiene un mecanismo de notificaciones a los clientes que se registran, que lo podes capturar con el TIBAlerter de la paleta Examples, si utilizas Delphi4. Si usas IBX o algún otro, seguramente tienen un equivalente.

Si utilizas oracle, hay un package a partir de la versión 8.1 que realiza la misma función. Ahora no recuerdo el nombre, pero seguro lo encontras en la documentación.

Hasta luego.

;)

Walter
11-06-2003, 03:15:26
Gracias Juan Antonio por responderme.

Te informo que las tablas que uso son de Paradox, tengo instalado Delphi 5 y uso un Query: TQuery, donde cargo la consulta en la propiedad .sql en tiempo de ejecucion.

Hasta pronto.

Ruben_Cu
12-06-2003, 02:18:30
Hola, el TQuery del BDE si tiene el método Refresh heredado del TDataSet y una manera de refrescar los datos sería con el uso de un timer que llame al método con una frecuencia que puedes definir en función de la frecuencia de cambios en tus usuarios.
Espero te sirva la propuesta.
Saludos

Walter
13-06-2003, 02:52:58
Gracias Rubén

Lo de usar el Timer ya lo había probado y funciona, el único inconveniente es que nunca sabes cuando otro usuario esta haciendo una modificación por lo tanto hay que darle una frecuencia bastante corta, calculo que eso debe consumir bastantes recursos, pero por ahora es la única alternativa.


Saludos.

Ruben_Cu
13-06-2003, 05:21:58
Hola Walter,en si no creo que consuma mas recursos, lo que si te puede hacer mas lento el programa con una frecuencia alta.
Al menos yo no conozco otra manera de refrescar los datos con BDE o lo haces a mano llamando al método o programado con un timer.
Saludos