Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Conexión con bases de datos (https://www.clubdelphi.com/foros/forumdisplay.php?f=2)
-   -   Actualización de tablas en red por código (https://www.clubdelphi.com/foros/showthread.php?t=72986)

giocatore 24-03-2011 06:57:42

Actualización de tablas en red por código
 
buenas, espero me ayuden con mi pregunta talvéz la hayan respondido antes pero la verdad no encontré lo que buscaba en los foros.

tengo dos aplicaciones en red trabajando bajo Mysql además de ADO y conectores ODbc.

Y quisiera saber porque cuando trabajo sobre una tabla simultáneamente desde dos computadoras diferentes no se actualiza la tabla del otro.

es decir suponiendo que desde la aplicacion 1 se ingreso un nuevo registro en la tabla XXX para luego hice un post, y que "con la misma tabla abierta" en otra pc (en la aplicacion 2) pulso el botón refresh.

¿Porque en la tabla de la aplicacion 2 no aparece la modificación o en este caso el registro mencionado que se introdujo ==?

Cabe destacar que utilizo código delphi, no estoy usando querys.

puse adotable1.refresh para actualizar pero los datos que introdujo el otro usuario en la tabla no se aparecen.

La única forma con la que logré hacerlos funcionar es poniendo la propiedad active de la tabla en falso y luego volviéndola a activar. con eso si pude ver los cambios que realizo el otro usuario.

Neftali [Germán.Estévez] 24-03-2011 10:32:28

Es correcto.
Una vez que has abierto una tabla (EQUIPO2), los datos se traen desde la Base de Datos (SERVIDOR) a tu aplicación local; Lo que no hace la aplicación es estar preguntando continuamente a la Base de Datos si alguien (EQUIPO1, EQUIPO3,...) ha añadido cosas nuevas para mostrartelas a tí.

Si así fuera, todos los equipos (EQUIPO1, EQUIPO2, EQUIPO3,...) deberían estar constantemente preguntando a la Base de Datos (SERVER) si alguien ha introducido datos nuevos para refrescarlos. Imagina el tráfico que eso podría generar si tuvieras 40 equipos introduciendo Datos a la vez y todos preguntando contra el servidor y refrescando todos los cambios de las otras 39 máquinas... :(

Lo logico es que al volver a preguntar al servidor por esos datos (al hacer el Active de nuevo o al ejecutar de nuevo la consulta) vuelvas a traer los datos de nuevo y veas los cambios que se han realizado desde otros equipos, como te está pasando.

giocatore 26-03-2011 00:24:03

Neftali, tu respuesta esta excelente me sacaste de una gran duda, por lo que entiendo no se puede actualizar de otra forma que no sea activando y desactivando la tabla pensé que existía alguna forma de actualizarlo con alguna propiedad del table como por ejemplo refresh, porque teóricamente refresh actualiza los datos de la tabla.

Una consulta más por favor, suponiendo que solo tengo 2 equipos en la red y desde la aplicación cliente hago que se active y desactive la tabla cada segundo, esto me crearía demasiado tráfico en la red??? y si es así se notaría demasiado este tráfico?? y como afectaría en mi aplicación.

Muchísimas Gracias!!!

Casimiro Notevi 26-03-2011 00:42:09

Has vuelto a preguntar lo mismo que te ha contestado ya Neftalí y has dicho que lo habías entendido. No, no es conveniente hacer eso, porque hoy serán 2 equipos, pero mañana pueden ser 3, y dentro de un año pueden poner 8 equipos y tú estás en otra empresa que te pagan mejor y en esa empresa dirán: "vaya chapuza que hizo el que trabajó aquí antes, esto no funciona, satura la red, va lentísimo, etc.".
Haz un simple cálculo, una consulta de refresco cada segundo equivale a 3600 a la hora, o sea, 86400 cada día, por 2 equipos= 172800 consultas. Normalmente el 99% de esas consultas serán inútiles porque no se modifican tantos datos constantemente que estén viendo al mismo tiempo en otro equipo. Así que tú mismo lo decides ;)


La franja horaria es GMT +2. Ahora son las 02:44:35.

Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi