Club Delphi  
    FTP   CCD     Buscar   Trucos   Trabajo   Foros

Retroceder   Foros Club Delphi > Principal > OOP
Registrarse FAQ Miembros Calendario Guía de estilo Temas de Hoy

Grupo de Teaming del ClubDelphi

Respuesta
 
Herramientas Buscar en Tema Desplegado
  #1  
Antiguo 01-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
Guardar y restaurar mi base de datos. Ayuda!

Hola, tengo un proyecto de gestion realizado en turbo delphi,para empezar decir que no tengo mucha idea de como usar delphi, y tengo que hacer/restaurar la copia de seguridad de la base de datos de mi proyecto.
Tengo un menu de inicio, en el cual tengo el menu desplegable de copia de seguridad, dentro de este menu tengo "Hacer" y "Restaurar", al hacer click en "Hacer" necesito que me guarde lo que tengo en mi archivo .gdb en un archivo seleccionado manualmente. Por el contrario, al hacer click en "Restaurar" quiero carga en mi archivo .gdb lo que tenga en un archivo seleccionado manualmete.
Os rogaria que me hechaseis una mano. Un saludo.
Responder Con Cita
  #2  
Antiguo 01-02-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola bienvenido al ClubDelphi!

Antes que nada, échale un vistazo a la Guía de Estilo y verás que tú pregunto no debe ir en este foro, sino mejor en el de Bases de datos.
Tambien puedes usar el buscador antes de postear por si este tema ya se ha tratado otras veces.

En cuanto a tu pregunta, tienes varias opciones:

1 - Copiar el fichero de la base de datos (.gdb) de la ruta de origen a la de destino. Para ello debes asegurarte de que no haya ninguna conexión abierta o activa sobre esa base de datos. Así que de primeras los componentes IbDatabase, IbTable, IbQuery, etc que tengas para conectarte, deben estar con la propiedad Active := False y/o (según el componente) connected := False o usar el método Close para cerrar las conexiones de cada uno.
Una vez desconectado, puedes usar las funciones CopyFile (unit Windows) o tambien MoveFile y MovoFileEx (tambien en la unit windows).
Ejemplo:

Código Delphi [-]
function Backup(origen, destino :string) : String; 
begin
   //Primero desconectamos todo
   Ibtable1.Close;
   IbDataBase1.Connected := False; //o IbDataBase1.Disconnect;

   //intentamos copiar el fichero
   copyfile(origen, destino, False); //El ultimo parametro indica si queremos para si el fichero de destino existe o no. Ponemos false y reescribe el fichero
end;

2 - Usando los componentes de backup-restore que existen por ahí y que dudo que vengan en TurboDelphi, ya que lo desconozco por completo (aun no lo he instalado)

Saludos
Responder Con Cita
  #3  
Antiguo 01-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
Muchas gracias por la ayuda, no estoy seguro de haberlo entendido todo, pero voy a hecharle un ojo a ver que sale, si tengo alguna duda la posteo en el tema de base de datos.
Responder Con Cita
  #4  
Antiguo 01-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
Cita:
Empezado por Bicho
Hola bienvenido al ClubDelphi!

Antes que nada, échale un vistazo a la Guía de Estilo y verás que tú pregunto no debe ir en este foro, sino mejor en el de Bases de datos.
Tambien puedes usar el buscador antes de postear por si este tema ya se ha tratado otras veces.

En cuanto a tu pregunta, tienes varias opciones:

1 - Copiar el fichero de la base de datos (.gdb) de la ruta de origen a la de destino. Para ello debes asegurarte de que no haya ninguna conexión abierta o activa sobre esa base de datos. Así que de primeras los componentes IbDatabase, IbTable, IbQuery, etc que tengas para conectarte, deben estar con la propiedad Active := False y/o (según el componente) connected := False o usar el método Close para cerrar las conexiones de cada uno.
Una vez desconectado, puedes usar las funciones CopyFile (unit Windows) o tambien MoveFile y MovoFileEx (tambien en la unit windows).
Ejemplo:


Código Delphi [-]
function Backup(origen, destino :string) : String;
begin
//Primero desconectamos todo
Ibtable1.Close;
IbDataBase1.Connected := False; //o IbDataBase1.Disconnect;

//intentamos copiar el fichero
copyfile(origen, destino, False); //El ultimo parametro indica si queremos para si el fichero de destino existe o no. Ponemos false y reescribe el fichero
end;





2 - Usando los componentes de backup-restore que existen por ahí y que dudo que vengan en TurboDelphi, ya que lo desconozco por completo (aun no lo he instalado)

Saludos
Hola, el comando copyfile no es exactamente lo que yo keria, ya que yo keria seleccionar el destino con un SaveDialog o algo por el estilo.
Y ¿Cual es la herramienta con la cual hago que salga una barra de progreso?, ya que al ejecutarse el copyfile no hace nada visual. Es simplemente para hacer notar que se ha guardado el archivo.
Responder Con Cita
  #5  
Antiguo 01-02-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola
Cita:
Empezado por salDer
ya que yo keria seleccionar el destino con un SaveDialog o algo por el estilo.
Y ¿Cual es la herramienta con la cual hago que salga una barra de progreso?, ya que al ejecutarse el copyfile no hace nada visual. Es simplemente para hacer notar que se ha guardado el archivo.
Haberlo dicho antes!! Revisa este hilo para la barra de progreso.

Y si quieres usar un cuadro de dialogo usa de la pestaña dialogs (de componentes) el componente SaveDialog y coges la propiedad SaveDialog1.FileName como parametro de destino para el fichero.

Espero te sirva.

Saludos
Responder Con Cita
  #6  
Antiguo 02-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
Cita:
Empezado por Bicho
Hola


Haberlo dicho antes!! Revisa este hilo para la barra de progreso.

Y si quieres usar un cuadro de dialogo usa de la pestaña dialogs (de componentes) el componente SaveDialog y coges la propiedad SaveDialog1.FileName como parametro de destino para el fichero.

Espero te sirva.

Saludos
Hola, bueno primero darte las gracias por molestare, pero aun tengo un problema, esto es el codigo de mi procedimiento:
SaveDialogCopiaSeguridad.Execute;
copyfile('gpsM10-A.gdb', SaveDialogCopiaSeguridad.FileName , False);

y ahora me da un fallo de imcompatibilidad de tipos, especificando:
[Pascal Error] UnitPrincipal.pas(90): E2010 Incompatible types: 'TFileName' and 'PAnsiChar', supongo que sera una tonteria, te agradeceria que me lo solucionases, gracias.
Lo de la barra de progreso aun no lo he podido mirar, pero ya le hechare un ojo.
Responder Con Cita
  #7  
Antiguo 02-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
Cita:
Empezado por Bicho
Hola


Haberlo dicho antes!! Revisa este hilo para la barra de progreso.

Y si quieres usar un cuadro de dialogo usa de la pestaña dialogs (de componentes) el componente SaveDialog y coges la propiedad SaveDialog1.FileName como parametro de destino para el fichero.

Espero te sirva.

Saludos
Hola, bueno primero darte las gracias por molestare, pero aun tengo un problema, esto es el codigo de mi procedimiento:
SaveDialogCopiaSeguridad.Execute;
copyfile('gpsM10-A.gdb', SaveDialogCopiaSeguridad.FileName , False);

y ahora me da un fallo de imcompatibilidad de tipos, especificando:
[Pascal Error] UnitPrincipal.pas(90): E2010 Incompatible types: 'TFileName' and 'PAnsiChar', supongo que sera una tonteria, te agradeceria que me lo solucionases, gracias.
Lo de la barra de progreso aun no lo he podido mirar, pero ya le hechare un ojo.
Responder Con Cita
  #8  
Antiguo 02-02-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Hola, prueba con lo que te he puesto en rojo.
Simplemente es hacer un TypeCast

Cita:
Empezado por salDer
copyfile('gpsM10-A.gdb', PChar(SaveDialogCopiaSeguridad.FileName) , False);
Saludos
Responder Con Cita
  #9  
Antiguo 02-02-2007
salDer salDer is offline
Registrado
 
Registrado: feb 2007
Posts: 7
Poder: 0
salDer Va por buen camino
eyyyyyy ya tengo casi terminada mi aplicacion, ya tengo hecha la barra de progreso, lo unico que falla ahora es que el copyfile solo copia archivos que esten en el mismo directorio del programa, sera por el comando:
copyfile('gpsM10-A.gdb', PChar(SaveDialogHacerCopia.FileName) , False);
en el SaveDialog tienes que seleccionar un archivo que este en la misma carpeta que donde esta el gpsM10-A.gdb sino no hace nada, pero bueno algo es algo .
Responder Con Cita
  #10  
Antiguo 02-02-2007
Avatar de Bicho
[Bicho] Bicho is offline
Miembro Premium
 
Registrado: jul 2003
Ubicación: Inca - Mallorca
Posts: 1.776
Poder: 22
Bicho Va por buen camino
Cita:
Empezado por salDer
lo unico que falla ahora es que el copyfile solo copia archivos que esten en el mismo directorio del programa, sera por el comando:
copyfile('gpsM10-A.gdb', PChar(SaveDialogHacerCopia.FileName) , False);
en el SaveDialog tienes que seleccionar un archivo que este en la misma carpeta que donde esta el gpsM10-A.gdb sino no hace nada, pero bueno algo es algo .
Hola, no deberías tener ningún problema con esto.
Los dos parámetros: origen y destino, deben contener la ruta completa de sus correspondientes ficheros:

Con el SaveDialog.Filename tienes la ruta completa de destino.
Con el origen, debes indicarle la ruta completa: C:\MiCarpeta\MiBD.gdb

Saludos
Responder Con Cita
  #11  
Antiguo 03-02-2007
Pedro-Juan Pedro-Juan is offline
Miembro
 
Registrado: ago 2006
Ubicación: Barcelona - España
Posts: 315
Poder: 18
Pedro-Juan Va por buen camino
Hacer Backup

No necesito cerrar nada, me funciona bien lo siguiente en tiempo de ejecución. Delphi 5, Interbase.

Código Delphi [-]
//Form para la copia
procedure TF_Backup.sBtnCopiarBackupClick(Sender: TObject);//Button copiar
var cFileName,cOrigen,cDestino: String;
begin
F_Backup.sLabel3.Visible := False; //Label de información de copia hecha
cFileName := 'ARCHIVO.GDB'; //Siempre el mismo, no puede cambiar
cOrigen  := Trim(F_Backup.sFilenameEditCopy.Text); //Componente externo a delphi
cDestino := Trim(F_Backup.sDirectoryEditCopy.Text); //Componente externo a delphi
if cDestino <> '' then if not DirectoryExists(cDestino) then MkDir(cDestino);
cDestino := (cDestino + '\' + cFileName);//En esta posición por si no 
                                                       //existía el directorio
  if CopyFile(PChar(cOrigen), PChar(cDestino), False) then begin
     F_Backup.sLabel3.Caption := 'La copia se realizó correctamente'
                                 + #13
                                 + cDestino
                                 + '   '
                                 + DateToStr(Now)
                                 + '   '
                                 + TimeToStr(Time);
     F_Backup.sLabel3.Visible := True;
  end
  else begin
     F_Backup.sLabel3.Visible := False;
     ShowMessage('No se pudo realizar la copia');
  end;
end;

Última edición por Pedro-Juan fecha: 03-02-2007 a las 18:52:09.
Responder Con Cita
  #12  
Antiguo 08-02-2007
waly2k1 waly2k1 is offline
Miembro
 
Registrado: dic 2006
Ubicación: El país de las maravillas(Argentina)
Posts: 251
Poder: 18
waly2k1 Va por buen camino
Backup/Restore zipeados con Password y comentarios

Si me decis como?. Te puedo pasar un ejemplo de como zipear la base a respaldar y como restaurar dicha base, todo en un solo form, funciona en Delphi 7, pero me imagino en otras versiones también. Salu2
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
Problema al restaurar base de datos jourdan Firebird e Interbase 4 24-08-2011 12:54:03
Restaurar Base de datos Viky Varios 1 29-01-2007 16:32:35
Restaurar base de datos (respaldo) con Delphi Delphiboy MS SQL Server 2 28-09-2005 15:46:28
Restaurar la base de datos.... celesdiaz Firebird e Interbase 1 27-05-2005 22:49:39
Problemas al restaurar Base de Datos JMOTON Firebird e Interbase 1 25-02-2004 17:46:01


La franja horaria es GMT +2. Ahora son las 21:14:31.


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