写了一个单机版的系统,用的是Access作后台?!现涉及数据备份的问题?!大家有什么好的建议或者好的想法?!

解决方案 »

  1.   

    用压缩/恢复数据库方法来实现数据库备份:unit unAccessTools;interfaceuses Sysutils,ComObj,Dialogs;function DaoActive(var DaoObject:OleVariant):Boolean;
    function DaoCompactDB(const FileName:string):Boolean;
    function DaoRepairDB(const FileName:string):Boolean;implementationfunction 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;//压缩Access数据库
    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;//修复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;end.
      

  2.   

    即使是SQL的也行?大家来谈谈平时大家都是怎么做的?
      

  3.   

    用控件打包成ZIP格式,改个自已的扩展名,就可以唬到人了
      

  4.   

    insert into #a select b
      

  5.   

    access数据库,用拷贝的不行吗?sqlserver用backup命令就可以了
      

  6.   

    可以先用楼顶朋友的方法先压缩数据库,然后调用ARJ等命令行压缩工具或直接
    用一些压缩控件将数据库进一步压缩,以最大限度的减小尺寸;恢复时只需解
    压缩就可以了。
      

  7.   

    To:楼上兄弟:
    怎么在Delphi里使用Arj命令进行压缩和解压缩!
      

  8.   

    哈,我上午刚研究了一下。
    下载一个VCLZIP。可以从TORRY。NET下载安装,但未注册,再到PLAYICQ。COM下载,解压后编译所有PAS,将生成的DCU覆盖掉安装的DCU,即无需注册代码在帮助文件里有。经试用很爽
      

  9.   

    我讲的只是文件压缩,跟数据库,算法,流程无关因为ACCESS用了不久,就会有好几M,如果打成ZIP,用日期为文件名,是个好办法。一般只有几十K到几百K