Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

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

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 03-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: 23
José Luis Garcí Va camino a la fama
Usar el Gbak desde mi aplicación

Hola compañeros, tengo mucha información de como usar el gback desde la linea de comandos, pero lo que me gustaría es poder hacerlo desde mi aplicacíon, poniendo dos edits, el 1º para la bd, el segundo donde guardarlo (esta parte esta solucionada, pero luego como mando la orden desde el programa, estoy probando en una aplicación sin b.d., pero la idea es hacerla desde la misma aplicación, tendría que cerrar el Ibdatabase.

Como siempre muchas gracias por vuestra ayuda.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #2  
Antiguo 03-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
gbak no necesita que cierres la base de datos, puede hacer el backup mientras están trabajando, ya que usa transacciones, por lo que no le molesta lo que hagan otros mientras él trabaja

Descarga este programita de backups que he compartido alguna vez en clubdelphi, échale un vistazo y verás cómo está hecho lo que quieres.
Y si tienes alguna duda... aquí estaré

Última edición por Casimiro Notevi fecha: 03-07-2012 a las 18:22:11.
Responder Con Cita
  #3  
Antiguo 03-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola José.

Te pongo un ejemplo de una forma simple en que podrías hacerlo:
Código Delphi [-]
procedure TForm1.MakeBackup;
const
   PATH_BACKUP = 'C:\...\Data\Backup\';
   FILE_BACKUP = 'C:\...\Data\BASEDATOS.FDB ';
var
  lpOperation, lpFile, lpParameters, lpDirectory: PChar;
  Nombre: string;
begin
  // Componer nombre de archivo (yyyymmdd.fbk)
  Nombre:= StringOfChar('0',4-Length(IntToStr(YearOf(Now))))+IntToStr(YearOf(Now)) +
    StringOfChar('0',2-Length(IntToStr(MonthOf(Now))))+IntToStr(MonthOf(Now)) +
    StringOfChar('0',2-Length(IntToStr(DayOf(Now))))+IntToStr(DayOf(Now))+ '.FBK';
  if not FileExists(PATH_BACKUP + Nombre) 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';
      lpParameters:= PChar('-v -t -user SYSDBA -password "masterkey" '+ FILE_BACKUP + PATH_BACKUP + Nombre);
      lpDirectory:= PChar(GetEnvironmentVariable('ProgramFiles')+'\Firebird\Firebird_2_5\bin');
      ShellExecute(Handle, lpOperation, lpFile, lpParameters, lpDirectory, SW_HIDE);
    finally
      Free;
    end;
end;

Saludos.

Edito: Sin dudas nada tán elaborado como el código de Casimiro. Código que, con su permiso, voy a pasar a echarle una mirada
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....

Última edición por ecfisa fecha: 03-07-2012 a las 18:12:03.
Responder Con Cita
  #4  
Antiguo 03-07-2012
Avatar de Casimiro Notevi
Casimiro Notevi Casimiro Notevi is offline
Moderador
 
Registrado: sep 2004
Ubicación: En algún lugar.
Posts: 32.044
Poder: 10
Casimiro Notevi Tiene un aura espectacularCasimiro Notevi Tiene un aura espectacular
Cita:
Empezado por ecfisa Ver Mensaje
Edito: Sin dudas nada tán elaborado como el código de Casimiro. Código que, con su permiso, voy a pasar a echarle una mirada
Es un programita sencillo, sin florituras
Responder Con Cita
  #5  
Antiguo 03-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: 23
José Luis Garcí Va camino a la fama
Casimiro Notevi
Cita:
gbak no necesita que cierres la base de datos, puede hacer el backup mientras están trabajando, ya que usa transacciones, por lo que no le molesta lo que hagan otros mientras él trabaja

Descarga este programita de backups que he compartido alguna vez en clubdelphi, échale un vistazo y verás cómo está hecho lo que quieres.
Y si tienes alguna duda... aquí estaré
Muy bueno el programa, le he estado echando un vistazo en su momento y no me acordaba de el , hasta que lo has nombrado.

ecfisa
Cita:
Te pongo un ejemplo de una forma simple en que podrías hacerlo:
Muchas gracias por el ejemplo lo pruebo en un rato.

Gracias a ambos.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #6  
Antiguo 03-07-2012
Avatar de Lepe
[Lepe] Lepe is offline
Miembro Premium
 
Registrado: may 2003
Posts: 7.424
Poder: 29
Lepe Va por buen camino
A colación:

Yo tengo código de internet que permite ejecutar una orden y recoger el resultado de la línea de comando en un String. Es útil para saber si ha dado algún error o no. Lo usé con gbak porque quería hacer un reparador de BBDD Firebird automático.

Si crees que te sirve, avisa y pego por aquí.

Básicamente hacía todos los pasos descritos en http://www.destructor.de/
__________________
Si usted entendió mi comentario, contácteme y gustosamente,
se lo volveré a explicar hasta que no lo entienda, Gracias.
Responder Con Cita
  #7  
Antiguo 03-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: 23
José Luis Garcí Va camino a la fama
muchas gracias Lepe, por supuesto todo lo que ayude es de agradecer y lo que no también (por la intención)
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
  #8  
Antiguo 03-07-2012
Avatar de ecfisa
ecfisa ecfisa is offline
Moderador
 
Registrado: dic 2005
Ubicación: Tres Arroyos, Argentina
Posts: 10.508
Poder: 36
ecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to beholdecfisa is a splendid one to behold
Hola José Luis.

Hay un detalle en el código que te puse, que si bién no afecta el funcionamiento, es innecesario.

Donde dice:
Código Delphi [-]
   StringOfChar('0',4-Length(IntToStr(YearOf(Now))))+IntToStr(YearOf(Now))

Bién podría decir
Código Delphi [-]
   IntToStr(YearOf(Now))
con el mismo efecto...


Saludos.
__________________
Daniel Didriksen

Guía de estilo - Uso de las etiquetas - La otra guía de estilo ....
Responder Con Cita
  #9  
Antiguo 03-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: 23
José Luis Garcí Va camino a la fama
ecfisa, he probado el código pero no va, lo único que he cambiado son las constantes y que lo ejecuto en un boton, te pongo el código por si ves, que he cometido algún error.

Código Delphi [-]
procedure TForm1.SpeedButton4Click(Sender: TObject);
const
   PATH_BACKUP = 'C:\TEBICA PROGRAMA\SEG BD\';
   FILE_BACKUP = 'C:\TEBICA PROGRAMA\BD\TEBICA.FDB';
var
  lpOperation, lpFile, lpParameters, lpDirectory: PChar;
  Nombre: string;
begin
//   Componer nombre de archivo (yyyymmdd.fbk)
  Nombre:= StringOfChar('0',4-Length(IntToStr(YearOf(Now))))+IntToStr(YearOf(Now)) +
    StringOfChar('0',2-Length(IntToStr(MonthOf(Now))))+IntToStr(MonthOf(Now)) +
    StringOfChar('0',2-Length(IntToStr(DayOf(Now))))+IntToStr(DayOf(Now))+ '.FBK';
  if not FileExists(Edit4.Text + Edit5.Text) 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';
//      lpParameters:= PChar('-v -t -user SYSDBA -password "masterkey" '+Edit3.Text + Edit4.Text + Edit5.Text);
      lpParameters:= PChar('-v -t -user SYSDBA -password "masterkey" '+ FILE_BACKUP + PATH_BACKUP + Nombre);
      lpDirectory:= PChar(GetEnvironmentVariable('ProgramFiles')+'\Firebird\Firebird_2_5\bin');
      ShellExecute(Handle, lpOperation, lpFile, lpParameters, lpDirectory, SW_HIDE);
    finally
      Free;
    end;
end;

Mi firebirrd es 2_5 y esta activo (Run) como un servicio y el (Start) en automático,por si te sirve de ayuda.
__________________
Un saludo desde Canarias, "El abuelo Cebolleta"
Responder Con Cita
Respuesta



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 00:06:35.


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
Copyright 1996-2007 Club Delphi