Hola nen, aqui va el backup de las tablas de access, recuperarlo no llegue a hacerlo, espero que si lo haces me lo mandes!!!, un saludo
Código Delphi
[-]
procedure TFcarga.hacercopiaseg(nombrealias:string;carpetadestino:string);
var
db1: TDatabase;
hCursor: hDBICur; ListDesc: TBLBaseDesc; cont_tablas: integer; max_tablas: integer; fichdest:textfile;
sep: string;
sep_fin: string;
rutadest: string;
num_campos: integer;
cont_campos: integer;
texto: string;
frase_act: string;
num_reg: integer;
reg_act: integer;
ruta: string;
Present: TDateTime;
Year, Month, Day, Hour, Min, Sec, MSec: Word;
ruta_con_modo: string;
begin
ListBox1.Clear;
ListBox2.Clear;
Database1 := nil;
try
Database1 := TDatabase.Create(nil);
Database1.databasename := nombrealias;
Database1.LoginPrompt := False;
Database1.Connected := True;
Check(DbiOpenTableList(Database1.Handle, False, False, '*', hCursor));
while (DbiGetNextRecord(hCursor, dbiNOLOCK, @ListDesc, nil)
= dbiErr_None) do
if ListDesc.bView then ListBox2.Items.Add(ListDesc.szName)
else
ListBox1.Items.Add(ListDesc.szName);
dbiCloseCursor(hCursor);
Database1.Connected := False;
Database1.Free;
Database2.Connected := false;
Database2.AliasName := nombrealias;
Database2.LoginPrompt := False;
Database2.Connected := True;
cont_tablas := 0;
max_tablas := ListBox1.items.count;
gauge1.MaxValue := max_tablas;
gauge1.Progress := 0;
crear_carp(carpetadestino);
while (cont_tablas < max_tablas) do
begin
table1.Active := false; Table1.TableName := ListBox1.Items[cont_tablas];
table1.Active := true;
num_reg := table1.RecordCount;
gauge2.MaxValue := num_reg;
gauge2.Progress := 0;
sep := '|';
Present:= Now;
DecodeDate(Present, Year, Month, Day);
ruta_con_modo := 'C:\albaranes\' + carpetadestino + '\';
rutadest := (ruta_con_modo + inttostr(day) + '_' + inttostr(month) + '_' + inttostr(year) + '\' + ListBox1.Items[cont_tablas] + '.txt' );
assignfile(fichdest,rutadest);
rewrite(fichdest);
Table1.First;
num_campos := table1.fields.Count - 1;
frase_act := '';
texto := '';
while (table1.Eof <> true) do
begin
gauge2.Progress := gauge2.Progress + 1;
cont_campos := 0;
while (cont_campos <= num_campos) do
begin
if (cont_campos = 0) then
begin
texto := table1.Fields[cont_campos].asstring;
end
else
begin
texto := sep + table1.Fields[cont_campos].asstring;
end;
cont_campos := cont_campos + 1;
frase_act := frase_act + texto;
end;
frase_act := frase_act + ';';
Writeln(fichdest, frase_act);
flush(fichdest);
frase_act := '';
table1.next;
end;
closefile(fichdest);
cont_tablas := cont_tablas + 1;
gauge1.Progress := gauge1.Progress + 1;
end;
except
Database1.Free;
raise;
end;
end;
PD: necesitas 2 databases, 1 table y 1 datasource