Архивные копии базы Аксесс
Архивные копии базы Аксесс
Архивные копии базы Аксесс При зависании компа заметил, что база Access удаляется поэтому я реализовал возможность автоматического копирования фала. При чем хранятся 5 последних изменений. Самые старые копии файла удаляются. Выбор фалов в папке с резервными копиями происходит по маске.. procedure LookDir(StartDir, Mask : String; List : TStringList); var SearchRec : TSearchRec; begin if Mask = '' then Mask := '*.*'; if StartDir[Length(StartDir)] <> '' then StartDir := StartDir + '\'; if FindFirst(StartDir+Mask, faAnyFile, SearchRec) = 0 then begin repeat if (SearchRec.Attr and faDirectory) <> faDirectory then begin List.Add(StartDir+SearchRec.Name); end else if (SearchRec.Name <> '..') and (SearchRec.Name <> '.') then LookDir(StartDir + SearchRec.Name + '', Mask, List); until FindNext(SearchRec) <> 0; FindClose(SearchRec); end; end; procedure BackUpBD; var path1,path2,fname:string; i,colfiles:integer; lst:tstringlist; begin colfiles:=5;//количество хранимых последних версий файла path1:=extractfilepath(application.ExeName); path2:=extractfilepath(application.ExeName)+'BackUpBD\'; if not DirectoryExists(path2) then MkDir(path2); fname:=path2+formatdatetime('yyyy-mm-dd hh-nn-ss',now)+'-BD.mdb.back'; //BD.mdb - имя файла вашей БД if copyfile(PChar(path1+'BD.mdb'),PChar(fname),false) = true then begin lst := TStringList.Create; LookDir(path2, '*.back', lst); if Lst.Count>colfiles then for i:= 0 to Lst.Count - colfiles-1 do deletefile(lst.Strings[i]); lst.Free; end else showmessage('Файл с БД не найден!'); end;