Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Bases de datos > Firebird e Interbase
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 16-07-2004
k2k2k2 k2k2k2 is offline
Miembro
 
Registrado: mar 2004
Posts: 28
Poder: 0
k2k2k2 Va por buen camino
Unhappy Como desconecto de Interbase

Hola a todos, estoy intentado restaurar con IBRestoreService, mi problema está cuando intento desconectar la base de datos.

Este es el código que uso para desconectar:

DataBase1.Connected := false;
DataBase1.CloseDataSets;
DataBase1.Close;
DataBase1.Free;

Cuando salgo de la aplicación uso este mismo código para desconectar la base de datos y sin problemas, pero cuando estoy intentado restaurar la base de datos con IBRestoreService, justo cuando hago DataBase1.Connected := false se produce el siguiente error.

Access violation at address 004C64B1 in module 'CentroMedico.exe'. Read of address 000000D2

Hay algun maestro por aquí, que me pueda esclarecer un poco de que va esto, por que estoy ya de los nervios. Un saludo.
Responder Con Cita
  #2  
Antiguo 16-07-2004
k2k2k2 k2k2k2 is offline
Miembro
 
Registrado: mar 2004
Posts: 28
Poder: 0
k2k2k2 Va por buen camino
Talking

Bueno acabo de encontrar la respuesta a mi quebradero de cabeza, asi que me respondo yo mismo.

El problema estaba en que no puedo cerrar la base de datos si tienes una ventana abierta conectada a la base de datos; intente cerrando la tabla que tenía asociado a esta ventana, es decir IBTable.Active := false, pero no vale con esto. Para que la base de datos desconecte sin error, debemos incluso cerrar todas las ventanas conectadas a la base de datos, y además liberar la memoria de ellas.

Un trozo de código:
...
// Cerramos la conexión con la base de datos.
frmPrincipal.Close;
frmPrincipal.Free;
DMPrincipal.db.Connected:=false;
// Comenzar
ServiceStart;
// Si se quiere ver el progreso...
if Verbose then
begin
While not Eof do
MRestore.Lines.Add(GetNextLine);
end;
finally
Active := False;
// Vovemos a conectar con la base de datos
DMPrincipal.Db.Connected:=true;
DMPrincipal.txn.Active:=true;
DMPrincipal.IBTPacientes.Active:=true;
Application.CreateForm(TfrmPrincipal, frmPrincipal);
frmPrincipal.Show;
Screen.Cursor := crDefault;

...
Bueno espero que esta explicación le sirve a alguién. Un saludo.
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 09:22:46.


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