PDA

Ver la Versión Completa : Refrescar conexión ADOConnection


DobleSiete
20-05-2005, 18:53:05
Saludos a todos...

Necesito desconectar un programa en Delphi 7 de la fuente de datos ODBC, la conexión apunta a un directorio con DBF. Solo consigo que se desconecte saliendo del programa. Es entonces cuando refresca los datos de los DBF.

He probado con todo, pero nada de nada, excepto errores. He probado con ADOTable.Close, ADOTable.Open y luego ADOTable.Refresh.... solo consigo error y mas errores. Tambien haciendo ADOConnection.Free... y tampoco.

La idea es "tumbar" la conexion sin salir del modulo.

Gracias a todos.

maeyanes
20-05-2005, 19:29:42
Ya probaste con ADOConnection.Close?

Dimanu
20-05-2005, 19:35:11
Hola delphiano, como estás, te cuento que la manera de refrescar la conexion es cerrandola y abriendola nuevamente esto es asi:

conexion1.close; //cierro
conexion2.open; //abro conexion

podeis amigo colocar un breakpoint en la linea conexion1.close y con F8 avanzar a la siguiente hasta ejecutar el open, si te da error pasame el mensaje ya que hace tiempo que trabajo con ADO..

Saludos.

DobleSiete
24-05-2005, 13:59:23
Gracias a todos por responder...

La solución al problema es simple aunque muy seria: sencillamente estaba utilizando dos componentes IBDatabase apuntando a la misma base de datos, pense que el problema era el componente ADOConnection, o los componentes ADOTable, y que debía desconectarlos y reconectarlos para limpiar la memoría, pero nada que ver.

De alguna manera la información recogida con un IBDatabase se quedaba en el otro componente. Los datos se actualizaban solamente al salir del módulo (y no al entrar).

La pregunta es ¿para necesitaba dos componentes que accesaban a la misma base de datos?
La respuesta es: uno era para las consultas, y el otro para las conversiones de archivos DBF a tablas Interbase. Es obvio que resultaba redundante, pero por evitar los fastidiosos errores de compilación lo dejé así... soberana idiotez la mia...

Bueno eso es todo... gracias por su ayuda...

y recuerden "el flojo trabaja doble"

yayis
24-05-2005, 18:30:16
solo por si lo necesitas ....

rqry:=TADOQuery.Create(self);
rqry.Connection:=datamodule.server;
if rqry.Connection.Connected=true then
rqry.Connection.Connected:=false;