Foros Club Delphi

Foros Club Delphi (https://www.clubdelphi.com/foros/index.php)
-   Varios (https://www.clubdelphi.com/foros/forumdisplay.php?f=11)
-   -   Copia de seguridad Delphi (https://www.clubdelphi.com/foros/showthread.php?t=10584)

luna 23-05-2004 18:26:19

Copia de seguridad Delphi
 
Hola!!
Estoy intentando hacer una copia de seguridad en delphi de dos tablas: alumnos.dbf y bancos.dbf, me han dicho que utilice el siguiente comando: BackupDatabase(connString, "MyTestDB", "D:\MyTestDbBackup.bak")
pero no sé a qué se corresponden los campos y si con esta sentencia me valdría para hacer la copia de dichas tablas en un disquette.
Muchas gracias!!!

marcoszorrilla 23-05-2004 18:36:35

Mírate la ayuda de la función CopyFile al fin y al cabo lo que quieres es copiar unos ficheros. No te olvides si tienes campos Memo de copiar los ficheros del tipo .Dbt y dependiendo el tipo de tablas los ficheros .Cdx ó .Mdx.

También podrías utilizar un fichero de tipo bat
Código:

Echo off
cls
Copy MiTabla.* a:>nul
Copy MiTabla2.* a:>nul

Y llamarlo desde Delphi con la función Winexec.

Un Saludo.

Combat-F2D 23-05-2004 18:38:21

Cita:

BackupDatabase(connString, "MyTestDB", "D:\MyTestDbBackup.bak")
me podrias dar informacion sobre esa funcion??

luna 23-05-2004 18:59:12

HOLA!!

He intentado hacer la copia por otro camino y me sale el siguiente error:
"cannot open AVI". Alguien sabe lo que significa??

Por cierto Julio, no te puedo ayudar porque sigo sin entender los parámetros de la función.

Gracias!!

marcoszorrilla 23-05-2004 19:01:20

Cita:

He intentado hacer la copia por otro camino y me sale el siguiente error:
"cannot open AVI". Alguien sabe lo que significa??
Cuando dices por otro camino, que quieres decir?, si quieres que te ayudemos nos tienes que ayudar tu también, dando más detalles y siendo más explícito.

Un Saludo.

luna 23-05-2004 19:23:39

HOla!!!

Me dijeron que para hacer una copia de seguridad de dos tablas: alumnos.dbf y bancos.dbf sería
muy simple con el comando backupdatabase, pero no lo entiendo.

Entonces me pasaron un código, lo he arreglado un poco xo me sale el error de
cannot open AVI. El código es el siguiente. La primera función y el segundo procedimiento pertenecen
a una unidad y son llamados desde la unidad que contiene el tercer procedimiento.

Graciasssssssss
Código Delphi [-]
 
function TForm5.discolisto(drive:char):boolean;
 var ErrorMode:word;
 begin
  if drive in ['a'..'z'] then Dec(Drive,$20);
  if not (drive in ['A'..'Z'] )then
   raise EConvertError.Create('Unidad no válida');
  ErrorMode:=SetErrorMode(SEM_FailCriticalErrors);
  try
   if DiskSize(Ord(drive)-$40) = -1 then
    result:=false
     else result:=true;
  finally
   SetErrorMode(ErrorMode);
  end;
 end;
procedure TForm5.copiarTabla(const strFuente,strTarget:string);
 var hDB:HDBIDB;
 const SOBRESCRIBIR=Bool(TRUE);
 begin
  screen.cursor:=crHourglass;
  with TTable.Create(Application) do
   try
    DatabaseName:=extractFilePath(strFuente);
    TableName:=extractFileName(strFuente);
    ProgressBar1.Position:=10;
    open;
    ProgressBar1.Position:=15;
    hDB:=DBHandle;
    close;
    ProgressBar1.Position:=25;
    check(dbiCopyTable(hDB,SOBRESCRIBIR,pChar(strFuente),'DBASE',
pChar(strTarget)));
    ProgressBar1.StepBy(25);
   finally
    free;
    ProgressBar1.Position:=25;
    screen.cursor:=crDefault ;
    ProgressBar1.Position:=ProgressBar1.Max;
   end;
  end;
 end.
 
procedure TPRINCIPAL.CopiaClick(Sender: TObject);
begin
 origen:= origen1;
 destino:=destino1;
 if Form5.discolisto(des) then
  begin
   with Form5 do
    begin
    Show;
     animacion.active:=true;
     copiarTabla(origen,destino);
     Lcopia.Caption:='Copia realizada ';
     animacion.active:=false;
     close;
    end;
 end
 else
  MessageDlg('Introduzca disco',mtWarning,[mbOK],0);
end;

__cadetill 23-05-2004 20:05:25

Dios!!!! pero como se le va la olla a la peña!!!! :eek: :confused:

luna, en serio, si sólo son 2 ficheritos..... has caso a Marcos y mírate el comando CopyFile

Si fuera todo una carpeta, en mi web tienes un truco (no recuerdo si el 1 o el 2 :D) que te ayudará a copiar toda una carpeta

También tienes en mi web un programa para hacer backup que incluso te comprime los datos (usando la librería ZLib), pero repito, si sólo son 2 tablas... no te compliques la vida y usa lo que te comenta Marcos ;)

luna 23-05-2004 20:34:43

Hola otra vez!!!

Hemos entrado en tu pagina y el truco 2 está muy bien xo no lo entendemos del todo, de q parte podríamos prescindir o todo es absolutamente necesario para lo que necesitamos hacer??

buscamos lo del CopyFile en la ayuda de delphi xo no vienen ejemplos


Graciasssssssssss

__cadetill 23-05-2004 20:41:33

Hola

Como te decía, eso es para copiar toda una carpeta y sus subcarpetas. Si es solo para 2 archivos y sabes la ruta y el nombre.....

Código Delphi [-]
CopyFile('FOrigen', 'FDestino', false);

luna 23-05-2004 21:01:58

Hola!!

Somos muy pesadas, xo eso es lo que hemos hecho:

FOrigen:=' C:\Documents and Settings\MANUEL\Mis documentos\Home\DELPHI\Fuentes Ejercicios Delphi\Tablas\Bancos.dbf';
FDestino:=' C:\Documents and Settings\MANUEL\Mis documentos';
ok:=CopyFile(Pchar(FOrigen), Pchar(FDestino), false);
if ok then
MessageDlg('funciona',mtWarning,[mbOK],0);

¿Qué es lo que estamos haciendo mal? xq el mensaje de ok no se imprime y
x supuesto no copia nada

gracias de verdad.

DarkByte 23-05-2004 21:31:39

luna, ¿porqué no pruebas a meter tu código en las etiquetas [ DELPH ] y [ / DELPHI ] sin espacios?, quedaría algo así:

Código Delphi [-]
FOrigen:=' C:\Documents and Settings\MANUEL\Mis documentos\Home\DELPHI\Fuentes Ejercicios Delphi\Tablas\Bancos.dbf';
FDestino:=' C:\Documents and Settings\MANUEL\Mis documentos';
ok:=CopyFile(Pchar(FOrigen), Pchar(FDestino), false);
  if ok then
     MessageDlg('funciona',mtWarning,[mbOK],0);

Me parece a mí que el error está en:
Código Delphi [-]
FDestino:=' C:\Documents and Settings\MANUEL\Mis documentos';
No especificas el nombre del archivo, supongo que la solución sería sustituirlo por
Código Delphi [-]
FDestino:=' C:\Documents and Settings\MANUEL\Mis documentos\Bancos.dbf';

Saludos!

luna 23-05-2004 21:38:54

Gracias!!!!!!!! :D :D :D

llevamos toda una tarde y al final eran tres sentencias. Ahora entendemos cdo dijiste q se nos iba la olla con el código anterior!!
gracias a todos:D :D

DarkByte 23-05-2004 21:44:16

¿Cuál fué al final la solución? ¿La de cadetill y marcoszorrilla en la que yo te he tenido que ayudar o alguna otra?

Julià T. 24-05-2004 00:37:21

ojo al copiar ficheros de tablas, ya que si estas no estan siendo utilizadas o abiertas por la misma u otra aplicación, no se va a copiar todo el contenido de las tablas ya que una parte estará todavia en memória o peor la cópia podria no servir para nada.

luna 24-05-2004 23:19:47

Hola a tod@s!

Al final lo hicimos con el CopyFile y la ruta, y pensar las vueltas que le dimos, que malo es no saber!!!:D :D :D

Gracias de nuevo

ingabraham 12-10-2007 17:19:31

Y Para Restaurar
 
with IBBackupService1 do begin
Active := True;
try
DatabaseName := 'C:\SOFTWARE_NOMINA\NOMINA_GOBERNACION.GDB';
BackupFile.Add('D:\NOMINA_GOBERNACION.GDB');
ServiceStart;
while not EOF do Memo1.Lines.Add(GetNextLine);
finally
Active := False;
end;

COMO HAGO PARA RESTAURAR ESTA COPIA

CON EL IBRESTORESERVICE1


La franja horaria es GMT +2. Ahora son las 17:23:08.

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