Club Delphi  
    Paypal   FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 04-07-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 25
José Luis Garcí Va camino a la fama
Hola compañeros, descubri el problema que tenia, resulta que si las rutas de orige o destino tiene espacios en blanco, debe ir entre comillas dobles. el código queda de la siguiente manera

Código Delphi [-]
procedure TForm1.Button3Click(Sender: TObject);
var
  lpOperation, lpFile, lpParameters, lpDirectory: PChar;
  varbPasado:Boolean;
begin
  varbPasado:=False;
  if not FileExists(Edit3.Text+'.FBK') then
    with TPanel.Create(nil) do
    try
      Caption:= 'Realizando copia de seguridad, aguarde un momento por favor...';
      Font.Size:= 14;
      Font.Name:= 'Arial';
      Width:= 600;
      Height:= 70;
      Left:= (Self.ClientWidth - Width) div 2;
      Top:= (Self.ClientHeight - Height) div 2;
      BevelInner:= bvNone;
      BevelOuter:= bvNone;
      BevelWidth:= 1;
      BorderStyle:= bsSingle;
      Ctl3D:= False;
      Parent:= Self;

      lpOperation:= 'open';
      lpFile:= 'gbak.exe';
      Edit1.Text:= '"'+Edit1.Text + '" ';
      lpParameters:= PChar('-v -t -user SYSDBA -password "masterkey" '+
        Edit1.Text +'"'+Edit2.Text+'"');
      lpDirectory:= PChar(GetEnvironmentVariable('ProgramFiles')+'\Firebird\Firebird_2_1\bin');
      Memo1.Lines.Clear;
      Memo1.Lines.Add(lpParameters);
      ShellExecute(Handle, lpOperation, lpFile, lpParameters, lpDirectory, SW_HIDE);
      varbPasado:=true
    finally
      if varbPasado=true then ShowMessage('Proceso terminado')
                         else ShowMessage('El fichero ya existe');
      Free;
    end;
end;

Ahora abusando un poco, es logico que pase según mis pruebade de 125 Mb a 8.90 y de 3.40 Mb a 28.5K
y por último cual seria la sentencia correcta para una restauración.

Muchas gracias por ser siempre tan atento ecfisa
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 04-07-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Con solo comparar el código del "programita" de Casimiro con el mío queda bién claro que el maestro no soy yo...
Eso se lo dirás a todos

Cita:
Empezado por José Luis Garcí Ver Mensaje
y por último cual seria la sentencia correcta para una restauración.
El problema de los espacios en blanco y que debes poner la ruta entre comillas... puedes verlo en mi código

Para restaurar es exactamente igual, con otros parámetros.

En lugar de gbak -b -t elorigen.fdb lacopia.fbk sería gbak -r -p 8192 lacopia.fbk elorigen.fdb

Eso sí, en este caso no puede haber nadie conectado a la BD, o mejor la restauras con otro nombre y luego sustituyes a la otra, o mejor la renombras... por si acaso hay algún problema en la restauración, no te vayas a quedar sin ninguna de las dos
Responder Con Cita
  #3  
Antiguo 06-07-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 25
José Luis Garcí Va camino a la fama
Hola compañeros, en primer lugar he tenido que poner el gbak en el directorio del ejecutable pero fuera de eso, me realiza bien las copias, creo que la diferencia de tamaño se debe a que debe eliminar los espacios en blanco, pero resulta que ahora estoy con la restauración de la copia de seguridad y este es el código que tengo

Código Delphi [-]
procedure TForm1.SpeedButton5Click(Sender: TObject);
//------------------------------------------------------------------------------
//*************************************************************[ Restaurar BD ]****
//------------------------------------------------------------------------------
function ProgressRoutine(TotalFileSize, TotalBytesTransferred, StreamSize, StreamBytesTransferred: LARGE_INTEGER; dwStreamNumber, dwCallbackReason: DWORD; hSourceFile, hDestinationFile: THandle; lpData: Pointer): DWORD; stdcall;
//------------------------------------------------------------------------------
//  Funcion del compañero escafandra bajado de
//  http://www.delphiaccess.com/forum/tr...eso-en-delphi/
//------------------------------------------------------------------------------
var
   Value: integer;
begin
   Application.ProcessMessages();
   if(dwCallbackReason = CALLBACK_CHUNK_FINISHED) then
      Form1.ProgressBar1.Position:= (int64(TotalBytesTransferred) * 100) div int64(TotalFileSize);
   Result:= PROGRESS_CONTINUE;
end;
var
  lpOperation, lpFile, lpParameters, lpDirectory: PChar;
  varbPasado:Boolean;
begin
  varbPasado:=False;
  if (Edit3.Text<>'') and (Edit4.Text<>'') then
  begin
    if CheckBox1.Checked then  //Si deseamos hacer una copia del original
    begin
      Cancel:= false;
      CopyFileEx(Fuente, Destino, @ProgressRoutine, nil, @Cancel, 0);
      ShowMessage(SysErrorMessage(GetLastError()));
    end;
    with TPanel.Create(nil) do
    try
        Caption:= 'Restaurando copia de seguridad, aguarde un momento por favor...';
        Font.Size:= 14;
        Font.Name:= 'Arial';
        Width:= 600;
        Height:= 70;
        Left:= (Self.ClientWidth - Width) div 2;
        Top:= (Self.ClientHeight - Height) div 2;
        BevelInner:= bvNone;
        BevelOuter:= bvNone;
        BevelWidth:= 1;
        BorderStyle:= bsSingle;
        Ctl3D:= False;
        Parent:= Self;
        lpOperation:= 'open';
        lpFile:= 'gbak.exe';
//        Edit3.Text:= '"'+Edit3.Text + '" ';
        lpParameters:= PChar('-r -v -p 8192 -user SYSDBA -password "masterkey" "'+ Edit3.Text +'" "'+Edit4.Text+'"');
//        if RadioGroup1.ItemIndex=0 then lpDirectory:= PChar(GetEnvironmentVariable('ProgramFiles')+'\Firebird\Firebird_2_1\bin')
//                                   else lpDirectory:= PChar(GetEnvironmentVariable('ProgramFiles')+'\Firebird\Firebird_2_5\bin');
         lpDirectory:=PChar(ExtractFilePath(Application.Name));
        ShellExecute(Handle, lpOperation, lpFile, lpParameters, lpDirectory, SW_HIDE);
        varbPasado:=true
    finally
        if varbPasado=true then ShowMessage('Proceso terminado')
                           else ShowMessage('El fichero ya existe');
        Free;
    end;
  end;
end;

como podréis comprobar, lo primero que hago es una copia del fichero original, con una función de escafandra, luego restauro la base de datos, el problema es que quiero restaurar una base de datos de 126 Mb y al finalizar sigo teniendo una de 3,40 Mb, y el fichero backup (FBK) tiene un tamaño de 9,25 Mb.
Supongo que est mal , no he intentado abrir la BD ya que de momento lo que tengo es la B.D. del programa (126 Mb), la primera copia de esta (3,40 Mb), pero supongo que algo no va bien.

Como siempre gracias por vuestra ayuda.


Casimiro
Cita:
El problema de los espacios en blanco y que debes poner la ruta entre comillas... puedes verlo en mi código
Lo comprobé, al igual que he estado mirando tus constantes, probando tú código, pero no encuentro ningún botón para hacer el backup sobre la marcha, se que el nombre es backupsPlanificados, pero echo en falta esto y la posibilidad de restaurar las copias ya echas. Eso si el programa es bueno y muy bien terminado.

Un saludo y gracias por vuestra colaboración y ayuda.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #4  
Antiguo 06-07-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Recuerda que con una copia "normal" (sin gbak) no debe existir ninguna conexión abierta a la BD, ya que la copia tendría grandes posibilidades de tener defectos.

En cuanto al tamaño del backup, restáurala con otro nombre, conecta a ella y echa un vistazo

En cuanto al programita BPF, por eso lo llamo programita, porque es muy simple, se quedó en el tintero montones de cosas que quería ponerle, pero siempre había otras cosas más urgentes que hacer, así que lo fui dejando.
Responder Con Cita
  #5  
Antiguo 06-07-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 25
José Luis Garcí Va camino a la fama
Hola Caimiro

Cita:
Recuerda que con una copia "normal" (sin gbak) no debe existir ninguna conexión abierta a la BD, ya que la copia tendría grandes posibilidades de tener defectos.
La idea es que el programa que se encargue de las copias de seguridad, este aparte del programa original, con lo cual no tendrá conectada ninguna base de datos. Aparte de Copiar y restaurar la base de datos, tambien permite copiar el directorio completo, con lo cual no interesa que este activo la BD. Como ya me indicarón en su día .

Cita:
En cuanto al tamaño del backup, restáurala con otro nombre, conecta a ella y echa un vistazo
por fin lo logre restaura, primero haciendo el proceso a mano (con el Command.com), y descubrí que en vez de -r tenia que poner -REP (para que remplazara la Bd), lo curioso es que el resultado final es de 14.4Mb y no de 126 Mb, aparentemente están los datos (Sólo le he echado un vistazo por encima).

Cita:
En cuanto al programita BPF, por eso lo llamo programita, porque es muy simple, se quedó en el tintero montones de cosas que quería ponerle, pero siempre había otras cosas más urgentes que hacer, así que lo fui dejando.
Primero de programita nada, es un señor programa, en cuanto a eso de "así que lo fui dejando", ¡Rápidamente dame el número de teléfono de tu jefe, vamos hombre, que es eso de ir dejando las cosas a medias!
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 06-07-2012
Avatar de José Luis Garcí
[José Luis Garcí] José Luis Garcí is offline
Miembro Premium
 
Registrado: may 2003
Ubicación: Las Palmas de G.C.
Posts: 1.372
Poder: 25
José Luis Garcí Va camino a la fama
Para los que le puedan interesar, acabo de subir el programa (ejecutable y fuentes) al Ftp del Club, para que lo useis libremente, para criticarme, apalearme, etc, esas cosas tan cariñosas que sabeis hacer.

esta en el ftp del Club con el nombre CDYCR_BD.zip.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #7  
Antiguo 06-07-2012
Avatar de Casimiro Noteví
Casimiro Noteví Casimiro Noteví is offline
Merodeador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.671
Poder: 10
Casimiro Noteví Tiene un aura espectacularCasimiro Noteví Tiene un aura espectacular
Cita:
Empezado por José Luis Garcí Ver Mensaje
por fin lo logre restaura, primero haciendo el proceso a mano (con el Command.com), y descubrí que en vez de -r tenia que poner -REP (para que remplazara la Bd), lo curioso es que el resultado final es de 14.4Mb y no de 126 Mb, aparentemente están los datos (Sólo le he echado un vistazo por encima).
Mira la imagen que te pongo, es de la última actualización del tutorial de gbak.

Cita:
Empezado por José Luis Garcí Ver Mensaje
Primero de programita nada, es un señor programa, en cuanto a eso de "así que lo fui dejando", ¡Rápidamente dame el número de teléfono de tu jefe, vamos hombre, que es eso de ir dejando las cosas a medias!
Ya no tengo jefe, soy libre como el viento

Cita:
Empezado por José Luis Garcí Ver Mensaje
Para los que le puedan interesar, acabo de subir el programa (ejecutable y fuentes) al Ftp del Club, para que lo useis libremente, para criticarme, apalearme, etc, esas cosas tan cariñosas que sabeis hacer.
esta en el ftp del Club con el nombre CDYCR_BD.zip.
Estupendo
Imágenes Adjuntas
Tipo de Archivo: jpg gbak.jpg (37,3 KB, 30 visitas)
Responder Con Cita
  #8  
Antiguo 30-09-2015
luk2009 luk2009 is offline
Miembro
 
Registrado: abr 2009
Posts: 33
Poder: 0
luk2009 Va por buen camino
Hola Casimiro, estuve probando tu programa, el cual me parece una maravilla. Tiene todo lo que necesito, ya que deseo programar un backup diario. El problema es que me sale el mensaje
Cita:
no se encontro el registro
solo funciono una vez con una de mis bases de datos y despues ni siquiera con esa funciona y me sale ese mensaje.

Alguna Idea de porque pasa esto. Gracias de antemano
Responder Con Cita
Respuesta


Herramientas Buscar en Tema
Buscar en Tema:

Búsqueda Avanzada
Desplegado

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

Temas Similares
Tema Autor Foro Respuestas Último mensaje
Usar archivos ayuda en mi aplicacion? Alejo15x Varios 4 14-05-2010 08:42:16
Cómo cerrar otra aplicacion desde mi aplicacion en Delphi 7 Gaby123 API de Windows 5 04-01-2007 22:44:51
Usar una aplicación externa desde Delphi erika.martinez Varios 9 14-04-2005 18:10:22
Puedo usar en una aplicacion CLX el Fastreport3 ctronx Impresión 1 08-11-2004 17:59:56
gbak jaime cotino Varios 1 21-06-2004 10:48:29


La franja horaria es GMT +2. Ahora son las 01:56:21.


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