FTP | CCD | Buscar | Trucos | Trabajo | Foros |
|
Registrarse | FAQ | Miembros | Calendario | Guía de estilo | Temas de Hoy |
|
Herramientas | Buscar en Tema | Desplegado |
#1
|
|||
|
|||
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. |
#2
|
|||
|
|||
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. |
|
|
|