Ir al contenido


Foto

Utileria para Respaldar y Restaurar Bases de Datos Firebird


  • Por favor identifícate para responder
34 respuestas en este tema

#1 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 02 diciembre 2008 - 02:23

Hola amigos,

Estreno este foro publicando un programa para realizar respaldos y restaurar bases de datos Firebird.

En este programa uso los siguientes componentes

Básicos

5 Edits
3 Botones
1 ComboBox
1 Speedbutton
1 Statusbar
6 Labels
1 OpenDialog

Adicionales

1 XPManifest
1 ActionManager

Especiales (Si no cuentan con estos componentes no funcionará esta herramienta)

1 IBBackupService
1 IBRestoreService

Aquí una imagen de la herramienta:

Imagen Enviada


Adjunto el código fuente esperando sea de utilidad

Salud OS

Archivos adjuntos

  • Archivo adjunto  49_.zip   10,71KB   178 descargas

  • 0

#2 Caral

Caral

    Advanced Member

  • Administrador
  • 4.255 mensajes
  • LocationCosta Rica

Escrito 02 diciembre 2008 - 02:25

Hola
Gracias amigo por el aporte, por supuesto que es útil.
Saludos
  • 0

#3 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 02 diciembre 2008 - 02:46

Hola
Gracias amigo por el aporte, por supuesto que es útil.
Saludos


:( :(, pero ni bajaste el código  8o|

Salud OS
  • 0

#4 Caral

Caral

    Advanced Member

  • Administrador
  • 4.255 mensajes
  • LocationCosta Rica

Escrito 02 diciembre 2008 - 02:49

Hola
Ya sabes que no uso Firebird amigo.
Pero en cuanto lo use sabes que es el primer lugar donde lo buscare.
Esta muy bien, no necesito bajarlo para saber de lo que eres capaz amigo.
Saludos
  • 0

#5 seoane

seoane

    Advanced Member

  • Administrador
  • 1.257 mensajes
  • LocationEspaña

Escrito 02 diciembre 2008 - 02:59

Yo si he bajado el código pero no lo puedo probar porque no tengo el IBBackupService  :( , pero se ve bastante bien.

Solo dos sugerencias (para la versión 2.0  ;) ): guardar los parámetros en un ini y poder iniciar el proceso desde la linea de comandos, así seria sencillo crear una copia automática utilizando la "Tareas programadas" de windows.
  • 0

#6 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 02 diciembre 2008 - 03:02

Yo si he bajado el código pero no lo puedo probar porque no tengo el IBBackupService  :( , pero se ve bastante bien.

Solo dos sugerencias (para la versión 2.0  ;) ): guardar los parámetros en un ini y poder iniciar el proceso desde la linea de comandos, así seria sencillo crear una copia automática utilizando la "Tareas programadas" de windows.


Pues amigo seoane, a metele mano y vamos mejorando el programita, esa es el punto, que de una idea aislada, hagamos algo que realmente se agradezca :D

Lo del INI es facil, lo que no se es lo que dices de utilizar las tareas programadas, :(

Salud OS
  • 0

#7 Caral

Caral

    Advanced Member

  • Administrador
  • 4.255 mensajes
  • LocationCosta Rica

Escrito 02 diciembre 2008 - 03:04

Hola
Y luego dicen, si la versión dos es la buena. :D :D
saludos
  • 0

#8 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 02 diciembre 2008 - 03:06

Las tareas programadas lo que hacen es ejecutar una linea de comando, esto quiere decir que si el ejecutable recibieras como parametro los valores de configuracion y se ejecutara automaticamente al abrir no deberia tener mayor problemas
  • 0

#9 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 02 diciembre 2008 - 03:15

Las tareas programadas lo que hacen es ejecutar una linea de comando, esto quiere decir que si el ejecutable recibieras como parametro los valores de configuracion y se ejecutara automaticamente al abrir no deberia tener mayor problemas


ok ok, entendi.

Pues manos a la obra.

Salud OS
  • 0

#10 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 02 diciembre 2008 - 03:41

Hola Eliseo... gracias por el aporte  :D
Solo una pregunta, que opciones usas para crear el backup... sería bueno que el programa tuviera las opciones en pantalla también  :D
  • 0

#11 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 02 diciembre 2008 - 03:48

Hola Eliseo... gracias por el aporte  :D
Solo una pregunta, que opciones usas para crear el backup... sería bueno que el programa tuviera las opciones en pantalla también  :D


Hola Felipe

     DatabaseName
     BackupFile
     Protocol
     ServerName
     Params
     Active
     ServiceStart


De los componentes

IBBackupService y IBRestoreService

Salud OS
  • 0

#12 felipe

felipe

    Advanced Member

  • Administrador
  • 3.283 mensajes
  • LocationColombia

Escrito 02 diciembre 2008 - 03:54

Ahh... ok... ya te entiendo  :D
  • 0

#13 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 04 diciembre 2008 - 06:33

Hola.

Pues buscando por aqui y por allá me encontré con una solución para incluir parametros a la aplicación, inicialmente pensé en usar la función FindCmdLineSwitch() pero no pude obtener los siguientes datos depues del parámetro switch  :(.

Sin embargo me encontré con esta función

Funcion creada por Mike Heydon
Tomada de: http://www.delphi300...le_1924.asp?SK=



delphi
  1. function GetParamVal(const TaggedParm : string;
  2.                     IgnoreCase : boolean = true) : string;
  3. var Retvar : string;
  4.     i,Len : integer;
  5.     Comp1,Comp2 : string;
  6. begin
  7.   RetVar := '';
  8.   Comp1 := TaggedParm + '=';
  9.   if IgnoreCase then Comp1 := UpperCase(Comp1);
  10.   Len := length(Comp1);
  11.  
  12.   for i := 1 to ParamCount do begin
  13.       Comp2 := copy(ParamStr(i),1,Len);
  14.       if IgnoreCase then Comp2 := UpperCase(Comp2);
  15.       if (Comp1 = Comp2) then begin
  16.         RetVar := copy(ParamStr(i),Len + 1,length(ParamStr(i)));
  17.         break;
  18.       end;
  19.   end;
  20.  
  21.   Result := RetVar;
  22. end;



Paso los parámetros a la aplicación de esta forma

FBBackRestore /DB=C:\DATOS\BASE.FDB /BK=C:\DATOS\BASE.FBK /SN=MISERVIDOR /U=MIUSUARIO /PW=MIPASSWORD

Donde:

/DB  Nombre de la Base de Datos (Ruta y nombre)
/BK  Nombre de archivo respaldo (Ruta y Nombre)
/SN  Nombre del servidor
/U    Usuario
/PW  Contraseña


Y en el evento OnShow de la forma hago esto:



delphi
  1. procedure TForm1.FormShow(Sender: TObject);
  2. begin
  3.   if ParamCount > 0 then begin
  4.     edDB.Text := GetParamVal('/DB');
  5.     edDBBK.Text := GetParamVal('/BK');
  6.     edServerName.Text := GetParamVal('/SN');
  7.     edUser.Text := GetParamVal('/U');
  8.     edPassw.Text := GetParamVal('/PW');
  9.   end;
  10. end;



A ver que les parece :)

Salud OS

  • 0

#14 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 05 diciembre 2008 - 06:47

Simple y preciso  (y)

Ahora leyendo mejor el comentario de seoane tambien existe la posibilidad de un archivo Ini, lo qu ete ahorraria los parametros y cargarias los valores ya guardados.  En este caso solo pasarias un parametro llamado Auto que le indicaria al programa que se ejecute con los valores ya guardados
  • 0

#15 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 05 diciembre 2008 - 10:29

Simple y preciso  (y)

Ahora leyendo mejor el comentario de seoane tambien existe la posibilidad de un archivo Ini, lo qu ete ahorraria los parametros y cargarias los valores ya guardados.   En este caso solo pasarias un parametro llamado Auto que le indicaria al programa que se ejecute con los valores ya guardados


Asi es pero pienso que deberia de tener las dos opciones ya que eso haria mas genérica la aplicación :), creo que esta herramienta da para mas :)

Salud OS
  • 0

#16 egostar

egostar

    missing my father, I love my mother.

  • Administrador
  • 14.156 mensajes
  • LocationMéxico

Escrito 05 diciembre 2008 - 11:36

Bueno paso a pasito, ya incluí en los parámetros la opción de ejecutar automáticamente la acción deseada, ya que de otra forma se ejecutaba el prgrama pero esperaba que el usuario ejecutara alguna acción manualmente.



delphi
  1. {
  2.   Los parámetros son los siguientes:
  3.  
  4. /DB  Nombre de la Base de Datos (Ruta y nombre)
  5. /BK  Nombre de archivo respaldo (Ruta y Nombre)
  6. /SN  Nombre del servidor
  7. /P    Protocolo (0=Local, 1=TCP)
  8. /U    Usuario
  9. /PW  Contraseña
  10. /F    Función (B=Backup, R=Restore)
  11.  
  12. }
  13. procedure TForm1.FormShow(Sender: TObject);
  14. begin
  15.   if ParamCount > 0 then begin
  16.     edDB.Text := GetParamVal('/DB');
  17.     edDBBK.Text := GetParamVal('/BK');
  18.     edServerName.Text := GetParamVal('/SN');
  19.     cbProtocol.ItemIndex := strtoint(GetParamVal('/P'));
  20.     edUser.Text := GetParamVal('/U');
  21.     edPassw.Text := GetParamVal('/PW');
  22.     Accion := GetParamVal('/F');
  23.     case Accion[1] of
  24.         'B' : Respaldar.Execute;
  25.         'R' : Restaurar.Execute;
  26.     end;
  27.   end;
  28. end;



En la linea de comandos se lanza de esta forma

FBBackRest.exe /DB=C:\FBBackup\BASE.FDB /BK=C:\FBBackup\BASE.FBK /SN=MYPC /U=USUARIO /PW=password /P=1 /F=B


Salud OS

Adjunto los fuentes :)

Archivos adjuntos

  • Archivo adjunto  74_.zip   13,51KB   43 descargas

  • 0

#17 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 19 enero 2009 - 05:06

Hola

Y digo yo... no sería más sencillo usar directamente gback?  8-)

Nos leemos

Vsss

  • 0

#18 FGarcia

FGarcia

    Advanced Member

  • Miembro Platino
  • PipPipPip
  • 687 mensajes
  • LocationMéxico

Escrito 21 enero 2009 - 05:11

Hace ya algun tiempo uso este codigo de Eliseo.
En una aplicacion lo deje como utileria para el usuario comun y corriente, el que solo sabe operar el programa aplicacion y le ha funcionado todo bien. usar el gback es mas engorroso para un usuario comun ( si para uno lo es...jeje yo soy chico windows, el DOS y las lineas de comando me hacen sufrir)
  • 0

#19 cadetill

cadetill

    Advanced Member

  • Moderadores
  • PipPipPip
  • 994 mensajes
  • LocationEspaña

Escrito 21 enero 2009 - 05:47

Hola

Hace ya algun tiempo uso este codigo de Eliseo.
En una aplicacion lo deje como utileria para el usuario comun y corriente, el que solo sabe operar el programa aplicacion y le ha funcionado todo bien. usar el gback es mas engorroso para un usuario comun ( si para uno lo es...jeje yo soy chico windows, el DOS y las lineas de comando me hacen sufrir)


jejeje, no hombre, no me refería a que tuviera que hacerlo el usuario desde una ventana DOS, me refería que quizás es más sencillo programar una llamada a ShellExecute que ejecute un gback de restore o de backup. De esta manera te aíslas de componentes y te aseguras de que te funciona con la versión de FB que tienes instalada (tienes que distribuir el gback.exe con tu app, claro :) )

Nos leemos

Vsss

  • 0

#20 eduarcol

eduarcol

    Advanced Member

  • Administrador
  • 4.483 mensajes
  • LocationVenezuela

Escrito 22 enero 2009 - 07:57

lo que pasa cadetill es que nos gustan los retos, jeje  8-|
  • 0