 |
Club Builder Foro de C++Builder en español
|
| Ver tema anterior :: Ver tema siguiente |
| Autor |
Mensaje |
seare Cdt

Registrado: 21 Oct 2003Mensajes: 2
|
Publicado: Jue 20 Sep, 2007 1:11 pm Asunto: Utilizar bdd que está abierta por otro programa o cerrarla |
|
|
He hecho una aplicación que utiliza una base de datos de access, está en formato MS Access 2000. Dicho programa tiene que descargar de un ftp la base de datos y, una vez descargada, modificarla.
Utilizo C++ Builder 5.
Al iniciarse el programa, creo un alias en el ODCB en tiempo de ejecución y cambio la propiedad DatabaseName de un Table al del alias, pues ya tengo una copia de la base de datos en la carpeta del programa.
Al cerrar el programa, elimino ese alias también en tiempo de ejecución.
Con un button, pongo Table1->Active = true y luego la edito.
Pruebo a subir la base de datos al ftp utilizando el NMFTP y la subo sin problemas, al menos la primera vez.
Ahora pruebo a descargarla, de nuevo con NMFTP. Previamente pongo Table1->Active = false, para que no esté abierta (ya he probado a poner Table1->Close() e incluso las dos opciones). A veces sí la descarga correctamente, otras no, no puede sustituir el archivo. Creo que el motivo es que el archivo está en uso, porque si intento renombrarla, moverla o borrarla Windows me dice que el archivo está en uso (Windows XP Pro actualizado hasta día de hoy).
Si lo primero que hago al abrir el programa es descargarla la descargo siempre sin problema y luego puedo poner Active = true en la Table y editarla. Cuando quiero subirla vuelve a fallar.
También he probado a descargarla y subirla sin llegar a activarla y también me da como que está en uso.
Incluso cerrando el programa, una vez que ya me ha dado el error, me lo dá siempre, para subir o bajar, aunque no para activarla y editarla, eso siempre lo permite.
He probado a abrir primero la base de datos con Table1->Open() y luego activarla. Cerrarla antes de subir o bajar al FTP con Table1->Close() y Table1->Active = false, pero nada. Hasta que reinicio no puedo volver a tocarle. De todas formas, la abro con MS Access y sí me deja.
Ya no sé qué hacer, agradecería cualquier idea para intentar averiguar qué estoy haciendo mal. Sigo pensando que, de alguna forma, alguna parte del programa o la deja abierta o se está utilizando por algún componente del ODCB.
Para crear el alias y eliminarlo, utilizo el código que aparece en Tips en este mismo foro -> https://cppbuilder.es/viewtopic.php?t=3644
Gracias por adelantado.
Un saludo: Seare |
|
| Volver arriba |
|
 |
seare Cdt

Registrado: 21 Oct 2003Mensajes: 2
|
Publicado: Vie 21 Sep, 2007 1:51 pm Asunto: |
|
|
He estado probando diversas cosas, entre ellas, además de cerrar la tabla elimino el Alias del ODCB antes de descargar la base de datos del ftp y vuelvo a crearlo una vez descargada.
También he probado a eliminar la base de datos que hay en el pc antes de descargar la nueva.
He probado a descargarla con otro nombre en plan temporal, borrar la base de datos vieja y renombrar la recién descargada.
Al final, sólo me da problemas al descargarla por segunda vez después de haber reiniciado el ordenador. El problema está en que me quedo sin permisos de escritura porque parece que está siendo utilizado el archivo por algún programa (evidentemente será el mío, aunque no se me ocurre como hacer que deje de hacerlo).
He estado mirando access y _waccess en la ayuda del builder que, por lo que entiendo, mira la accesibilidad de un archivo. No tengo permiso de escritura en ese archivo, ¿hay alguna forma de "obligar" a tu programa a que obtenga permisos de escritura a la fuerza? Ya he mirado por los foros y buscado por internet pero no encuentro nada al respecto.
Soy bastante novato en esto y no se me ocurre nada. Os agradecería cualquier idea para intentar encontrar la solución.
Gracias por todo. |
|
| Volver arriba |
|
 |
|
|
No puedes publicar temas nuevos en este foro No puedes responder a temas en este foro No puedes editar tus mensajes en este foro No puedes borrar tus mensajes en este foro No puedes votar en las encuestas de este foro
|
© 2002–2026 Club Builder · Funciona con phpBB.
|