Ver Mensaje Individual
  #8  
Antiguo 13-07-2010
Avatar de guillotmarc
guillotmarc guillotmarc is offline
Miembro
 
Registrado: may 2003
Ubicación: Huelva
Posts: 2.638
Reputación: 24
guillotmarc Va por buen camino
Cita:
Empezado por JUGUE Ver Mensaje
mightydragonlor, estoy de acuerdo con lo que dices pero podrias hacerme un favor... Enseñame como lo hago. Te Agradeceria.
Supongamos que tu conexión se llama Cn.

Pues cuando quieras abrir la conexión llamas a Cn.Open, entonces haces lo que debes hacer y cuando hayas terminado cierras la conexión con Cn.Close.

Ejemplo :

Cn.Open.
qryFacturarAlbaranes.ExecQuery;
Cn.Close;

Ahora bien, te vas a encontrar con varios problemas. Los componentes que utilizas necesitan la conexión abierta y la transacción abierta para tener abierto un Dataset (y poder mostrar datos en una Grid, pro ejemplo).

Así que tienes que hacer lo que dice mightydragonlor, es decir, trabajar con ClientDatasets. De forma que tu Dataset estará almacenado en un ClientDataset (en memoria local de la maquina cliente) de manera que puedes cerrar perfectamente la conexión con la base de datos, y no necesitarás volver a conectarla hasta que no quieras trasladar con un ApplyUpdates los cambios (altas, bajas, modificaciones, ...) que se hayan hecho en el ClientDataset.

Cn.Open;
ClientdatasetClientes.Open;
Cn.Close;

...
...
... Luego cuando quieras guardar cambios :

Cn.Open;
ClientdatasetClientes.ApplyUpdates(0);
Cn.Close;


NOTA: Trabajar así es laborioso, pero si tu red inalámbrica se cae tanto como dices, entonces parece que no tienes otro remedio. Busca como dice mightydragonlor, a ver si tu componente de conexión tiene un propiedad KeepConnection, Timeout, ... que cierre automáticamente la conexión si no se utiliza (aunque naturalmente, para ello debes asegurarte de no mantener Datasets abiertos, y para ello los tienes que pasar todos a ClientDatasets).
__________________
Marc Guillot (Hi ha 10 tipus de persones, els que saben binari i els que no).
Responder Con Cita