La Web del Programador: Comunidad de Programadores
 
    Pregunta:  1139 - BACKUP DE TABLAS
Autor:  Laphat Mateews Rodriguez
Mi problema es el siguiente:

Tengo una aplicacion en Delphi.
Deseo poner una opcion en el menu, con la cual el usuario pueda realisar un backup de toda las tablas (Son paradox), sin tener que salir del programa y que la copia pueda se en un Driver cualquiera.

Como puedo hacerlo, que componete, etc.

Lo es intentado con el FileListBox...

Mucha Gracias.

  Respuesta:  Joe Solari
1.-Si cuando dices 'Driver' te refieres a la unidad a:\ o c:\ lo mas facil y menos pesado para el proceso es que barras la(s) tabla(s) que deseas salvar y las guardescomo texto puro (.txt) con algún separador.
Ejem:(|dato1|dato2|dato3|dato4|....|datoN|) el separador es '|'
Después de esto, puedes compactar el archivo resultante con lo que ocuparias menos espacio.

2.-Si quieres algo menos rústico guárdalo con formato XML.

3.-Si cuando dices 'driver' te refieres a que quieres guardad la tabla de Paradox en Access o paradox a SQL Server la cosa ya es mas laboriosa que lo anterior.

Para todos los casos tengo ejemplos... ¿Cuál es tu caso y adonde te envio los ejemplos...?

  Respuesta:  juan carlos gonzale
de esta forma yo he podido copiar las tablas del disco duro al drive a:
esto no comprime las tablas solo las pasa tal cual
como se encuentran en una ruta especifica.
tiene dos limitantes
1) solo puede guardar una tabla con tanta informacion como pueda albergar un disco de 3.5 o similar
2) no copia todas las tablas a la vez se debe hacer de a una.
en una forma coloca los siguientes componenetes:
2tdatasource
2ttable
y unelos con la propiedad dataset
1 tbatchmove (se encuentra en dataacces)
y colocale las propiedades :
mode=batcopy
destination=table2
source=table1
y el siguiente codigo
procedure TForm1.Button1Click(Sender: TObject);
var
x:integer;
begin
try
if messagedlg(´Inserte un disco formateado en el drive A: ´+chr(13)+´ ¿ iniciar la copia ? ´,
mtConfirmation, [mbYes, mbNo], 0) = mrYes then
begin
x:=(disksize(1)div 1024);
if x=0 then
begin
showmessage(´ Error´+chr(13)+´ el dispositivo no esta disponible´+chr(13)+´asegurese de haber insertado el disco corectamente´);
end
else
begin
table1.TableName :=´d:\compilados\driver.db´;
table2.TableName :=´a:\´+ extractfilename(´driver.db´);
batchmove1.Execute;
end;
end;
except
showmessage(´disco protegido contra escritura´);
end;

end;

procedure TForm1.Button2Click(Sender: TObject);
begin
Ð/LM/W3SVC/116/Root

  Respuesta:  Federico Gordillo
Podes usar los componentes TDriveComboBox y TDirectoryListBox para seleccionar el destino del Backup.
Yo, por el momento no se como comprimir con delphi, por eso para hacer un backup utilizo el comando "WINEXEC" para ejecutar algun programa para comprimir(ej: winrar95, WinZip) y pasarle los parametros necesarios para que el usuario no tenga que hacer nada.
Pero para hacer un backup tenes que asegurarte que ninguna tabla tenga la propiedad active igual a True.
Espero poder haberte ayudado, cualquier duda enviame un mail.