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)
-   -   Refresco de tablas (https://www.clubdelphi.com/foros/showthread.php?t=29164)

wuepe 13-01-2006 18:51:03

Refresco de tablas
 
Pues yo uso MYSQL y ADO, el proveedor que uso para la conexion es uno que me baje de la pagina de mysql : MyODBC-3.51.10-x86-win-32bit

La pregunta es, tengo dos aplicaciones que se conectan a una tabla clientes, al iniciar el programa se carga la tabla, pero si el otro pc da de alta un cliente, en el mio la tabla no se refresca automaticamente, tendria que hacer un requery, o un close y open, pero no puedo hacerlo constantemente.

No hay algo que se pueda configurar ado para que se trabaje con las tablas como si fueran locales?

Gracias de antemano

delphi.com.ar 13-01-2006 18:54:33

¿Un DataSet.Refresh?

vtdeleon 13-01-2006 22:02:09

Saludos

En algunos DataSet no funciona el "Refresh", por lo que nada mas que cerrar y abrir el dataset (que de por cierto no me gusta!).

AzidRain 14-01-2006 17:01:23

Aunque soy un poco nuevo en esto de bases de datos C-S (vengo del mundo de tablas planas) considero puedo opinar al respecto. El problema que tienes realmente no lo es como tal ya que cualquier base de datos C-S tiene como enfoque el que un cliente le pida datos y un servidor se los mande. En el mundo de las tablas planas (Paradox, dBASE etc.) el enfoque es distinto y tu aplicación tiene acceso a toda la tabla completita. Ahora bien, tendrías que replantear tu diseño para ver si es necesario que tengas acceso a tooooda la tabla al mismo tiempo....digamos que en un PC tienes abiertos todos los registros de clientes (mediante un SELECT *, que a mi no me gusta) y en otro PC se les ocurre dar de alta uno nuevo...
El que tiene abierta toda la tabla...le es relevante el registro que acaba de añadirse (tal ves solo estaba consultando otros datos distintos)?? entonces ni siquiera es necesario "refrescarle" los datos.
Por otro lado si es forzosamente necesario actualizar cuando alguien da de alta... podrias poner una marca (un archivo, o un registro en una tabla de MYSQL ) de tal manera que puedas estar consultando cada x tiempo si hubo un actualizacion y en tal caso indicar al usuario si desea refrescar...


Te repito que soy nuevo en esto de CS pero creo que tendrias que cambiar tu enfoque...a mi me costó sangre, sudor y lágrimas entender el enfoque de CS ya que al principio todo lo resolvia con SELECT * (hasta vergüenza me da)...

Saludos.

wuepe 16-01-2006 09:55:54

El problema es del cursor. que lo tengo en clUseClient y no me deja ponerlo en clUseServer

Y por eso no se me refresca los datos, por que trabajo con datos locales, y tendrian que ser remotos.

Pero no me dejaba cambiarlo >.< mi connectionstring es:
"Provider=MSDataShape.1;Extended Properties="DRIVER={MySQL ODBC 3.51 Driver};DESC=;DATABASE=BD;SERVER=localhost;UID=root;OPTION=3;STMT=;";Persist Security Info=False;Mode=ReadWrite;User ID=usuario;Data Provider=MSDASQL.1"

y abajo en provider: MSDataShape.1

Ahora CursorLocation es clUseClient y no meja cambiarlo, tp el mode

E intentado usar SQLOLEDB que si me pone el cursor en el servidor, pero no me deja aceptar la conexion, me da error al configurarla: Error al inicializar el proveedor >.<

Y necesito que se actualizen solos los datos y no hacer un refresh cada cierto tiempo.

Gracias


La franja horaria es GMT +2. Ahora son las 08:54:43.

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