![]() |
Cierre de la Base de Datos
Hola.
¿ Es normal que la Base de Datos se cierre después que la Aplicación?. Tengo un programa y utilizo Firebird, cuando lo cierro(Application.terminate) desaparece el form principal, pero si lo ejecuto inmediatamente me produce un error porque todavía está la base abierta. Si espero unos segundos todo funciona correctamente. ¿ Es correcto?. Gracias anticipadas. |
Hola Loviedo!
Que lástima que este mensaje no sea una respuesta a tu pregunta. Tengo FireBird 1.5 y hasta el momento no se como utilizarlo debido a que siempre he manejado BD tipo Dbase. ¿Me puedes explicar como trabajar FireBird con Delphi 5? (podría ser a través del MSN o de correos electrónicos) Gracias. |
Hace muy poco tiempo que utilizo esta base de datos, pero Firebird es como todas, solo que más potente. Otra cosa es sacarle el máximo rendimiento.
Firebird es igual que Interbase, por lo que puedes utilizar los componentes IBX de Delphi (TIBDatabase, TIBdataset,..etc.) y no necesitas el BDE. Yo utilizo IBExpert que es free para crear tablas,procedimientos almacenados... Su uso principalmente es para aplicaciones cliente/servidor, aunque tambien la puedes utilizar como base de escritorio. Te recomiendo que leas el foro dedicado a esta base de datos, se aprende mucho. Sólo soy un aficionado. Saludos. |
Saludos.
Cita:
por ej:
|
Yo por si acaso cierro todo, y aún no me han dado problemas.
Código:
procedure TMenu_F.Salir; |
procedure TFmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin IBD1.Connected := false; Application.terminate; end; Aunque funciona bien, se cierra la base de datos después que la aplicación. Lo he podido comprobar porque ejecuto el programa inmediatamente después de haberlo cerrado y da error, es por lo que quiero tener garantía de que la base de datos está cerrada. Saludos. |
Para cada ventana que se cierra, delphi comprueba si se trata del MainForm, si lo es, despues de ejecutar varios eventos, llamará a Terminate. Tal como dice la ayuda, terminate es asincrono, por eso tarda un poquito en cerrar todo. Una cosa es que la ventana principal desaparezca de tu vista y otra que haya terminado completamente de cerrarse todos los recursos apropiados. Puedes verlo en la Unidad Forms:
Como ves, el evento OnClose tiene más "cosas que hacer" además de tu código. Al abrir rapidamente el programa, puede que aún no haya cerrado la base de datos, y por eso te dé el fallo. Un saludo |
Quedo agradecido.
Saludos. |
| La franja horaria es GMT +2. Ahora son las 23:18:29. |
Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi