Pues aqui sufriendo porque no puedo poner una base de datos fuera de linea desde mi aplicación.
(Firebird 2.1.3 + delphi2009 + Win vista)
Server Version: WI-V2.1.3.18185 Firebird 2.1
Server Implementation: Firebird/x86/Windows NT
Service Version: 2
Estoy haciendo un programa de adicion, modificacion, etc. a la base de datos. Con eso no tengo ningun problema.
La situación es que deseo (debo poner) la base de datos fuera de linea antes de aplicar dichas actualizaciones.
Lo estoy intentando a traves de gfix y ejecutarlo en una consola de DOS. He buscado por la internet algunas soluciones y
he encontrado varias funciones que te permiten ejecutar programas externos.
Ahora, lo estoy haciendo a traves de un archivo ejecutable bat, donde en tiempo de ejecucion construyo los parametros del
gfix.
Tanto para cerrar como poner en linea nuevamente la base de datos.
Me he encontrado con;
Poner la BD fuera de linea = Sin problemas
Poner la BD en linea = no funciona, en algunas ocasiones hasta me detiene el servicio de la instancia FireBird.
He realizado pruebas de ejcutar los archivos bat desde la consola DOS y funcionan correctamente, pero desde mi aplicacion
tengo esta falla.
Ciclo del programa.
1.- Poner en linea la BD (por si está fuera de linea)
![*-)](http://delphiaccess.com/foros/public/style_emoticons/default/07.gif)
2.- Cerrar la BD.
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
3.- aplicar las actualizaciones a la BD, a traves de IBScript.
![:D](http://delphiaccess.com/foros/public/style_emoticons/default/01.gif)
4.- Poner en linea la BD
![:p](http://delphiaccess.com/foros/public/style_emoticons/default/04.gif)
5.- Cerrar el programa.
Si trato de entrar a la BD por otro medio, IBExpert, otro programa, me encuentro que la BD esta fuera de linea.
Lo más extraño es que si vuelvo a ejcutar el programa, el punto 1 funciona adecuadamente (sin hacer nada mas del
programa solo el evento OnShow), cierro la aplicación y voila ! todo correctamente.
Si ejecuto nuevamente el programa de actualizacion mencionado, se repite el ciclo que les comento.
En este momento y despues de usar varias funciones para ejecutar el BAT.
![:@](http://delphiaccess.com/foros/public/style_emoticons/default/12.gif)
Estoy usando la funcion ExecAndWait, que ejecuta y espera hasta finalizar.
Antes de ejecutar el bat, determino la ruta de la instancia firebird y la pongo como directorio actual (SetCurrentDir)
El contenido del archivo BAT para arrancar la BD es;
gfix -user sysdba -password contra shostess:d:\hoszip\app\hoszip.fdb -online normal
El contenido del archivo BAT para detener la BD es;
gfix -user sysdba -password contra shostess:d:\hoszip\app\hoszip.fdb -shut single -force 0
Por ahí me encontre en la internet que el gfix, tiene algunos bugs
![:|](http://delphiaccess.com/foros/public/style_emoticons/default/09.gif)
Pues he hecho otro programa para realizar las instalaciones de mis aplicaciones y con el hago la instalacion de firebird
desde la aplicaciona traves de un archivo bat conteniendo los parametros de instalacion.
Instalo ambas partes, servidor y cliente. Nunca he tenido problemas al ejecutar
Ayuda, por favor alguien tiene algo para hacer esto. He agotado todas las instancias para solucionar esto.
![8o|](http://delphiaccess.com/foros/public/style_emoticons/default/21.gif)
Gracias,
![:tongue:](http://delphiaccess.com/foros/public/style_emoticons/default/tongue.gif)
![:embarrassed:](http://delphiaccess.com/foros/public/style_emoticons/default/embarrassed.gif)