Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > Conexión con bases de datos
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Conexión con bases de datos

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 29-04-2005
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
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.
Responder Con Cita
  #2  
Antiguo 29-04-2005
carlosegs carlosegs is offline
Miembro
 
Registrado: abr 2005
Posts: 16
Poder: 0
carlosegs Va por buen camino
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.
Responder Con Cita
  #3  
Antiguo 30-04-2005
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
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.
Responder Con Cita
  #4  
Antiguo 30-04-2005
Avatar de vtdeleon
vtdeleon vtdeleon is offline
Miembro
 
Registrado: abr 2004
Ubicación: RD & USA
Posts: 3.236
Poder: 24
vtdeleon Va por buen camino
Saludos.
Cita:
Empezado por Loviedo
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)
Cuando cierras la aplicacion, cierras las base de datos?
por ej:
Código Delphi [-]
ibtable.close;
__________________
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!
Responder Con Cita
  #5  
Antiguo 30-04-2005
fly fly is offline
Miembro
 
Registrado: abr 2005
Posts: 65
Poder: 20
fly Va por buen camino
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.
Responder Con Cita
  #6  
Antiguo 30-04-2005
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
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.
Responder Con Cita
  #7  
Antiguo 30-04-2005
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
Código Delphi [-]
procedure TFmain.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  IBD1.Connected := false;
  Action := cafree;
end;

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:

Código Delphi [-]
procedure TCustomForm.Close;
var
  CloseAction: TCloseAction;
begin
  if fsModal in FFormState then
    ModalResult := mrCancel
  else
    if CloseQuery then
    begin
      if FormStyle = fsMDIChild then
        if biMinimize in BorderIcons then
          CloseAction := caMinimize else
          CloseAction := caNone
      else
        CloseAction := caHide;
      DoClose(CloseAction);
      if CloseAction <> caNone then
        if Application.MainForm = Self then Application.Terminate
        else if CloseAction = caHide then Hide
        else if CloseAction = caMinimize then WindowState := wsMinimized
        else Release;
    end;
end;

procedure TCustomForm.DoClose(var Action: TCloseAction);
begin
  if Assigned(FOnClose) then FOnClose(Self, Action); 
 ahora se pone tu base de datos en false
end;

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.
Responder Con Cita
  #8  
Antiguo 30-04-2005
Loviedo Loviedo is offline
Miembro
 
Registrado: dic 2004
Posts: 214
Poder: 0
Loviedo cantidad desconocida en este momento
Quedo agradecido.
Saludos.
Responder Con Cita
Respuesta



Normas de Publicación
no Puedes crear nuevos temas
no Puedes responder a temas
no Puedes adjuntar archivos
no Puedes editar tus mensajes

El código vB está habilitado
Las caritas están habilitado
Código [IMG] está habilitado
Código HTML está deshabilitado
Saltar a Foro


La franja horaria es GMT +2. Ahora son las 00:03:11.


Powered by vBulletin® Version 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Traducción al castellano por el equipo de moderadores del Club Delphi
Copyright 1996-2007 Club Delphi