小弟求救:如何用delphi备份、压缩和恢复access数据库,在线等待,高分!

解决方案 »

  1.   

    备份和恢复可以采用直接的将access数据库文件copy到另一个文件夹就行的,恢复将备份的access数据库文件覆盖掉现在的access数据库不就OK!!
    压缩嘛,用压缩软件压缩啦,delphi有专门做压缩的第三方控件,自己去找一下啦!做一个压缩程序压缩数据库文件不就行了。
    access不比sql有自己的压缩命令!
      

  2.   

    复制 粘贴的过程;
    至于压缩吗:
    var
      FileAdd :string;
    begin
      FileAdd :=zipfilename;
      if FileExists(FileAdd)=false then
         Exit;
      zipmData.ZipFilename :=FileAdd;
      if ZipMData.Count < 1 then
      begin
        Application.MessageBox('没有文件需要解压缩!','错误提示',mb_iconStop+mb_OK);
        Exit;
      end;
      with zipmData do
      begin
        zipmData.ExtrBaseDir:='\';//FilePath;
        zipmData.ExtrOptions :=[ExtrDirNames]+[ExtrOverwrite];
        try
          zipmData.Extract;
        except
          Application.MessageBox('解压缩中,需要的dll文件不存在或不能用!,!','信息提示',mb_iconStop+mb_OK);
        end;
      end;
    end;
      

  3.   

    以下代码,测试通过:
    --------------------------------------
    unit Unit1;
    interface
    uses
      Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
      Dialogs, StdCtrls,ComObj;
    type
      TForm1 = class(TForm)
        Button1: TButton;
        OpenDialog1: TOpenDialog;
        procedure Button1Click(Sender: TObject);
      private
        { Private declarations }
      public
        { Public declarations }
      end;var
      Form1: TForm1;
    implementation
    {$R *.dfm}
    //压缩Access数据库
    function DaoActive(var DaoObject:OleVariant):Boolean;
    begin
      Result:=False;
      try
        DaoObject:=GetActiveOleObject('DAO.DBEngine.36');
        Result:=True;
      except
        try
          DaoObject:=CreateOleObject('DAO.DBEngine.36');
          Result:=True;
        except
          DaoObject:=Null;
        end;
      end;
    end;function DaoCompactDB(const FileName:string):Boolean;
    var
      db:OleVariant;
      TempFile:string;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          TempFile:=ExtractFilePath(FileName)+'msaTemp.mdb';
          db.CompactDatabase(FileName,TempFile);
          DeleteFile(FileName);
          RenameFile(TempFile,FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;procedure TForm1.Button1Click(Sender: TObject);
    begin
       if DaoCompactDB('e:\abc\jxcdb.mdb') then      ShowMessage('OK');
       end;
    end;
    end.
      

  4.   

    function DaoRepairDB(const FileName:string):Boolean;//修复
    var
      db:OleVariant;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          db.RepairDatabase(FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;
      

  5.   

    //修复Access数据库
    function DaoRepairDB(const FileName:string):Boolean;
    var
      db:OleVariant;
    begin
      Result:=False;
      try
        if not DaoActive(db) then
          Exit;
        try
          db.RepairDatabase(FileName);
          Result:=True;
        except
          on E:EOleException do
            ShowMessage(E.Message);
        end
      finally
        db:=Unassigned;
      end;
    end;