Ver Mensaje Individual
  #3  
Antiguo 30-03-2004
Tomás Tomás is offline
Miembro
 
Registrado: may 2003
Ubicación: Elche
Posts: 140
Reputación: 22
Tomás Va por buen camino
Tienes que desconectar la base de datos.

Este código funciona.

Código:
    begin
      with IBRSRestaurar do
        begin
          Active := True;
          try
            //cursor reloj y limpiar backup
            Screen.Cursor := crHourGlass;
            DatabaseName.Clear;
            BackupFile.Clear;
            // Base de datos destino
            DatabaseName.Add(ExtractFilePath(ExpandFileName(ParamStr(0))) + 'COMUNIDAD.GDB');
            // Fichero origen
            BackupFile.Add('A:\Comunidad.gbk');
            // Comenzar
            ServiceStart;
          finally
            //cerrar
            Active := False;
          end;
        end;
      //mensajes y reponer cursor
      Screen.Cursor := crDefault;
      close;
    end
Extracto de un artículo de José Alonso;
Código:
IBRestoreServices. Restaurar copias.
Obviamente, no tendría sentido tener la posibilidad de sacar copias de seguridad, si luego no contásemos
con un sistema capaz de poder restaurarlas. Para ello contamos con este servicio.
La forma de uso es tan sencilla como la del IBBackupService. Unas pocas líneas de código bastan para
dotar a nuestras aplicaciones de la posibilidad de restaurar copias de nuestra base de datos. Ved si no el
listado 2, donde se ofrece un ejemplo del uso de este componente.
Listado 2. Restaurar una copia de seguridad
// Restaurar desde una copia de seguridad
procedure TWUtilidades.TBRestoreClick(Sender: TObject);
begin
with DMServicios.IBRestore do
begin
Active := True;
try
Screen.Cursor := crHourGlass;
DatabaseName.Clear;
BackupFile.Clear;
MRestore.Lines.Clear;
// Cargamos las opciones que nos indiquen
Options := [];
if chkIndices.Checked then Options := Options + [DeactivateIndexes];
if chkShadow.Checked then Options := Options + [NoShadow];
if chkValidate.Checked then Options := Options + [NoValidityCheck];
if chkReplace.Checked then Options := Options + [Replace];
if chkCreate.Checked then Options := Options + [CreateNewDB];
// ¿Quieren ver el progreso?
Verbose := chkVerboseRestore.Checked;
PageBuffers := 3000;
PageSize := 4096;
// Indicamos la base de datos destino
DatabaseName.Add(EDb.Text);
// El archivo GBK origen
BackupFile.Add(EGbk.Text);
// Cerramos la conexión con la base de datos.
// En una aplicación real, tendriamos que cerrar todas las ventanas activas
// que tengan una conexión con tablas de la base de datos
DMMain.Desconectar;
// Comenzar
ServiceStart;
// Si se quiere ver el progreso...
if Verbose then
begin
While not Eof do
MRestore.Lines.Add(GetNextLine);
MRestore.Lines.Add('¡ PROCESO TERMINADO !');
end;
finally
Active := False;
// Vovemos a conectar con la base de datos
DMMain.Conectar;
Screen.Cursor := crDefault;
end;
end;
El Rinconcito de Dephi 25
end;
Las propiedades son similares a las ya vistas para el Backup. Lógicamente, las opciones que tenemos
disponibles son distintas en esta ocasión.
DeactivateIndexes:: Si fijamos esta opción a True, los indices no serán reconstruidos durante el
proceso de restauración.
NoValidityCheck: Si establecemos a True esta opción, desactivaremos la verificación de la integridad
de los datos.
Replace: La base de datos existente, será sobreescrita. Esta opción es para los amigos de las
emociones fuertes.
Responder Con Cita