⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 backup.pas

📁 针对快餐店的会员管理系统.具有详细的分类及管理作用
💻 PAS
字号:
unit BackUp;

interface

uses
  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
  Dialogs, RzTabs, ImgList, RzButton, ComCtrls, RzListVw;

type
  TFileTimeType = (fttCreation, fttLastAccess, fttLastWrite);
  TBackUpForm = class(TForm)
    RzListView: TRzListView;
    RzBitBtn1: TRzBitBtn;
    RzBitBtn2: TRzBitBtn;
    RzBitBtn3: TRzBitBtn;
    RzBitBtn4: TRzBitBtn;
    ImageList1: TImageList;
  //更新列表
    procedure UpdateList;
    //搜索文件
    procedure SearchFile(Ext: String; ModeName: Integer);
    procedure FormCreate(Sender: TObject);
    procedure RzBitBtn1Click(Sender: TObject);
    procedure FormShow(Sender: TObject);
    procedure RzBitBtn2Click(Sender: TObject);
    procedure RzBitBtn3Click(Sender: TObject);
    procedure FormKeyDown(Sender: TObject; var Key: Word;
      Shift: TShiftState);
    //显示过程信息
    procedure ShowProcessMessages(Ending : Boolean);
  private
    { Private declarations }
  public
    { Public declarations }
  end;

var
  BackUpForm : TBackUpForm;
  AddData    : Integer;     //是否压缩数据 0=false; 1=true
  AddMode    : Integer;     //数据压缩方式 <0..5>
implementation

uses WaitPas1, progress, DM, Option, CompressData;

{$R *.dfm}

//分别对应文件创建时间,访问时间,修改时间 
function GetFileDateTime(const FileName: string; FileTimeType: TFileTimeType): TDateTime; 
var 
   Handle: THandle;
   FindData: TWin32FindData;
   LocalFileTime: TFileTime;
   DosDateTime: Integer;
begin
   Handle := FindFirstFile(PChar(FileName), FindData);
   if Handle <> INVALID_HANDLE_VALUE then
    begin
    Windows.FindClose(Handle);
    if (FindData.dwFileAttributes and FILE_ATTRIBUTE_DIRECTORY) = 0 then
     begin
        case FileTimeType of
          fttCreation : FileTimeToLocalFileTime(FindData.ftCreationTime, LocalFileTime);
        fttLastAccess : FileTimeToLocalFileTime(FindData.ftLastAccessTime, LocalFileTime);
         fttLastWrite : FileTimeToLocalFileTime(FindData.ftLastWriteTime, LocalFileTime);
        end;
        if FileTimeToDosDateTime(LocalFileTime, LongRec(DosDateTime).Hi,
            LongRec(DosDateTime).Lo) then begin
            Result := FileDateToDateTime(DosDateTime);
            Exit;
        end;
    end;
   end;
   Result := -1;
end;

procedure TBackUpForm.UpdateList;

begin
  //更新备份文件列表
  RzListView.Items.Clear;
  SearchFile('*.Jbk',0);
  SearchFile('*.Zbk',1);
end;

procedure TBackUpForm.FormCreate(Sender: TObject);
begin
   UpdateList;
   RzListView.DoubleBuffered:=true;
end;

procedure TBackUpForm.RzBitBtn1Click(Sender: TObject);
var
   AddName : String;
begin
//数据库备份
  AddName:=ExtractFilePath(paramstr(0))+'BackUp\'+FormatDateTIme('YYYY-MM-DD-HH-NN-SS',now)+'.Jbk';
  WaitPas.Create(DM1.ADOQuery1,AddName,1,AddData,AddMode);
  WaitForm.ShowModal;
  UpdateList;
end;

procedure TBackUpForm.FormShow(Sender: TObject);
begin
//检查数据压缩方式
  AddData:=OptionForm.BackUpSet.ItemIndex;
  AddMode:=OptionForm.Mode.ItemIndex;
end;

procedure TBackUpForm.RzBitBtn2Click(Sender: TObject);
var
   I : Integer;
begin
//删除一个备份的数据库文件
   i:=RzListview.ItemIndex;
   if i<0 then Exit;
   if Messagebox(handle,'您确定要删除这一个备份文件吗?删除后不能恢复!','询问',MB_YESNO+MB_ICONQUESTION+MB_TOPMOST)=idyes then begin
      DeleteFile(ExtractFilePath(paramstr(0))+'BackUp\'+RzListview.Items[i].Caption);
      RzListview.Items[i].Delete;
   end;
end;

procedure TBackUpForm.RzBitBtn3Click(Sender: TObject);
var
   RName : String;
   I     : Integer;
begin
//还原备份数据
   i:=RzListView.ItemIndex;
   if i<0 then Exit;
   RName:=ExtractFilePath(paramstr(0))+'BackUp\'+RzListView.Items[i].Caption;

   if not FileExists(RName)then begin
      Messagebox(handle,'您所选择的数据库备份文件不存在,请选择其他备份文件!','错误',MB_OK+MB_ICONWARNING);
      UpdateList;
      Exit;
   end;

   if Messagebox(handle,'还原客户关系管理系统数据时,将导致现有数据被覆盖,您确定要还原吗?','提醒',MB_YESNO+MB_ICONQUESTION)=IDNO then Exit;

   //是否压缩文件
   if ExtractFileExt(RName)='.Jbk'then
      Waitpas.Create(DM1.ADOQuery1,RName,2,1,-1)
   else Waitpas.Create(DM1.ADOQuery1,RName,2,0,-1);
   WaitForm.ShowModal;
   CompressDataForm.Opendata;
   DM1.ADODataSet1.Requery();
end;

procedure TBackUpForm.SearchFile(Ext: String; ModeName: Integer);
var
     Sr          : TSearchRec;
     Err         : integer;
     path, FSize,
           ModeN : String;
begin
//搜索指定文件
  Case ModeName of
      0  : ModeN:='压缩文档';
      1  : ModeN:='备份文档';
  end;
  Err:=FindFirst(ExtractFilePath(paramstr(0))+'BackUp\'+Ext,$37,Sr) ;
  path:=ExpandFileName(ExtractFilePath(paramstr(0))+'BackUp\'+sr.Name);
  while Err=0 do begin
     if Sr.Name<>'.' then begin
        with RzListView.Items.Add do begin
             Caption:=(sr.Name);
             ImageIndex:=ModeName;
             SubItems.Add(ModeN);
             if (Sr.Size div 1024)<1024 then
                FSize:=IntToStr(Sr.Size div 1024)+' KB'
             else FSize:=FormatFloat('#.#0',Sr.Size/1048576)+' MB';
             SubItems.Add(FSize);
             SubItems.Add(FormatDateTime('yyyy-mm-dd,hh:mm:ss',GetFileDateTime(ExtractFilePath(paramstr(0))+'BackUp\'+Sr.Name,fttLastWrite)));
        end;
     end;
     Err:=FindNext(Sr);
  end;
  SysUtils.FindClose(SR);
end;

procedure TBackUpForm.FormKeyDown(Sender: TObject; var Key: Word;
  Shift: TShiftState);
begin
//如果按下F5,则更新列表
  if Key=VK_F5 then
     UpdateList;
end;

procedure TBackUpForm.ShowProcessMessages(Ending : Boolean);
begin
  if Ending then
     Messagebox(handle,'数据库维护操作成功!','提示',MB_OK+MB_ICONINFORMATION+MB_TOPMOST)
  else Messagebox(handle,'数据库维护操作失败,请稍候再试!','提示',MB_OK+MB_ICONERROR+MB_TOPMOST);
end;

end.

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -