![]() |
![]() |
![]() |
![]() |
![]() |
FTP | ![]() |
![]() |
CCD | ![]() |
![]() |
Buscar | ![]() |
![]() |
Trucos | ![]() |
![]() |
Trabajo | ![]() |
![]() |
Foros | ![]() |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
![]() |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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. |
#3
|
|||
|
|||
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. |
#4
|
||||
|
||||
Saludos.
Cita:
por ej:
__________________
Van Troi De León (Not) Guía, Code vB:=Delphi-SQL, ¿Cómo? Viajar en el tiempo no es teóricamente posible, pues si lo fuera, ya estarían aqui contándonos al respecto! |
#5
|
|||
|
|||
Yo por si acaso cierro todo, y aún no me han dado problemas.
Código:
procedure TMenu_F.Salir; begin Dmq1.IBTransaction.Commit; // Guardar y cerrar transaccion... Dmq1.IBTransaction.Active:=false; // ...ya deberia estar cerrada pero por si acaso... Dmq1.IBDatabase.CloseDataSets; // ...idem con los datasets... Dmq1.IBDatabase.Close; // ...la base de datos... Report_DMQ.RvProject1.Close; // ...el proyecto de rave... Menu_F.Close; // ...el form... end; // ...y pa casa. Última edición por fly fecha: 30-04-2005 a las 04:07:22. |
#6
|
|||
|
|||
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. |
#7
|
||||
|
||||
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
__________________
Si usted entendió mi comentario, contácteme y gustosamente, se lo volveré a explicar hasta que no lo entienda, Gracias. |
#8
|
|||
|
|||
Quedo agradecido.
Saludos. |
![]() |
|
|
![]() |
|