Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Firebird e Interbase (https://www.clubdelphi.com/foros/forumdisplay.php?f=19)
-   -   Progreso al restaurar una copia de seguridad (https://www.clubdelphi.com/foros/showthread.php?t=91420)

Angel.Matilla 02-02-2017 18:02:18

Progreso al restaurar una copia de seguridad
 
Para que cuando se hace la copia de seguridad con un TIBBackupService no parezca que el equipo se ha quedado muerto me he montado un formulario con un TMemo en el que se va volcando por donde va el proceso de copia. Eso lo hago así:
Código:

Backup->LoginPrompt = false;
Backup->Params->Add("user_name=sysdba");
Backup->Params->Add("password=masterkey");
Backup->DatabaseName = fPersona->Afiliados->DatabaseName;
Backup->BackupFile->Add(cAux = cDirectorio + "\\" + Now().FormatString("yyyymmddhhnnss") + ".gbk");
Backup->Active = true;
Backup->ServiceStart();

while (Backup->IsServiceRunning)
          Memo1->Lines->Add(Backup->GetNextLine());

El resultado es este:

Había pensado que para usar el TIBRestoreService valdría una proceso similar:
Código:

Restore->LoginPrompt = false;
Restore->Params->Add("user_name=sysdba");
Restore->Params->Add("password=masterkey");
Restore->DatabaseName->Add(fPersona->Afiliados->DatabaseName);
Restore->BackupFile->Add(pItem->SubItems->Strings[2]);

Restore->Active = true;
Restore->ServiceStart();

while (Restore->IsServiceRunning)
          Memo1->Lines->Add(Restore->GetNextLine());

Sin embargo al ejecutarlo en el TMemo no se muestra nada, se queda en blanco.

Todas las variables que aparecen (cAux, pItem, etc.) están perfectamente definidas; el proceso se ejecuta bien pero no muestra nada ¿Alguna idea?

Casimiro Notevi 02-02-2017 21:20:26

¿Seguro? :)

bitbow 02-02-2017 21:28:02

Se ocurre >>

Application.Processmessage;

y actualizar el memo conforme vas avanzando.

Saludos.

Angel.Matilla 03-02-2017 17:56:30

Cita:

Empezado por Casimiro Notevi (Mensaje 512901)
¿Seguro? :)

No te entiendo.¿Seguro que pasa lo que describo o seguro que funciona? :o

Angel.Matilla 03-02-2017 17:57:03

Cita:

Empezado por bitbow (Mensaje 512904)
Se ocurre >>

Application.Processmessage;

y actualizar el memo conforme vas avanzando.

Saludos.

Lo he probado pero no hace efecto aparente.

Casimiro Notevi 03-02-2017 19:37:39

Ya veo, usa:
Código Delphi [-]
ServiceStart;
While not Eof do
  Memo1.Lines.Add(GetNextLine);

ecfisa 04-02-2017 05:55:35

Hola
Cita:

Empezado por Angel.Matilla (Mensaje 512900)
...
Sin embargo al ejecutarlo en el TMemo no se muestra nada, se queda en blanco.

Todas las variables que aparecen (cAux, pItem, etc.) están perfectamente definidas; el proceso se ejecuta bien pero no muestra nada ¿Alguna idea?

Te faltaría poner la propiedad Verbose en true ( gbak -v ).

Ejemplo:
Código:

{
  TIBRestoreService *ibr = static_cast<TIBRestoreService*>(IBRestoreService1);

  ibr->Params->Clear();
  ibr->Params->Add( "user_name=sysdba" );
  ibr->Params->Add( "password=masterkey" );

  ibr->BackupFile->Clear();
  ibr->BackupFile->Add( BACKUP_FILE ); // (1)

  ibr->DatabaseName->Clear();
  ibr->DatabaseName->Add( DB_FILE_NAME ); // (2)

  ibr->LoginPrompt = false;

  ibr->Verbose    = true;
  ibr->Options    = (TRestoreOptions)ibr->Options << Replace; // (3)

  ibr->Active      = true;
  ibr->ServiceStart();

  while ( ! ibr->Eof )
    Memo1->Lines->Add( ibr->GetNextLine() );

  ibr->Active = false;
}

(1) Ruta y nombre del archivo de resguardo
(2) Ruta y nombre de la base de datos (o alias)
(3) Equivalente a gbak -rep

Saludos :)

Angel.Matilla 04-02-2017 09:52:01

Cita:

Empezado por ecfisa (Mensaje 512930)
Hola

Te faltaría poner la propiedad Verbose en true ( gbak -v ).

Perefecto. Muchísimas gracias. No se me había ocurrido; como en el TIBBackup lo había puesto pues ni se me ocurrió mirar la propiedad dando por supuesto que estaba a true por defecto.


La franja horaria es GMT +2. Ahora son las 12:39:32.

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