请问:
        在DELPHI中怎样备份和恢复Access数据库

解决方案 »

  1.   

    var
    sourcefilename,destfilename:string;
    begin
    if Frmmain.BR ='0' then
    begin
      bsskinsavedialog1.FileName:=formatdatetime('yyyymmdd',Now())+'Health.mdb';
      if bsskinsavedialog1.Execute then
       begin
        destfilename:= bsskinsavedialog1.FileName;
        with dmin do
         begin
          if adodatabase.Connected =true then
           begin
            adodatabase.Connected :=false;
            adodatabase.close ;
           end;
        end;
        sourcefilename:=extractfilepath(application.exename)+'Health.mdb';
        with Tmemorystream.Create do
          try
           self.Refresh ;
           self.Refresh ;
           self.Refresh ;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           self.Refresh ;
           self.Refresh ;
           self.Refresh ;
           loadfromfile(sourcefilename);
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           self.Refresh ;
           self.Refresh ;
           self.Refresh ;
           FrmBackup.Cursor:=crHourGlass;
           savetofile(destfilename);
           self.Refresh ;
           self.Refresh ;
           FrmBackup.Cursor:=crHourGlass;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           flatprogressbar1.StepIt ;
           FrmBackup.Cursor:=crDefault ;
           flatprogressbar1.Position:=0;
           MsgDlg('数据备份成功!',mtWarning,[mbOK],'全民健康普查管理系统',stRound_ArrowMiddle);
        finally
         free;
       end;
         with dmin do
          begin
           if adodatabase.Connected =false then
             begin
               adodatabase.Connected :=true;
               adodatabase.Open ;
             end;
         end;
      end;
     end;
      

  2.   

    呵呵,对啊,由于ACCESS是单文档数据库,你将它copyfile到别的地方或者改个名字不就可以了吗?然后在程序中的恢复备份部分到指定目录查找再使用ADO来操作它!
      

  3.   

    顶一下!
    我也有同样的问题
    主要思路是要用delphi程序复制mdb数据库
    本人很菜,写了一下,就是复制的文件格式不对!
    最好能写出代码来,上面叶男的代码看不懂
      

  4.   

    叶男的程序是从一个大程序中只拿出一部份,Frmmain.BR是什么对象的属性不知,程序还有
    同样的对象不知表达什么.
      

  5.   

    ADOCONNECTION.CONNECTED:=FALSE //断开数据连接后。
    使用copyFile()拷贝ACCESS文件即可;
      

  6.   

    你可一看看\ocx\servers\access97.pas
    _application.dbenginee对象
    compatdatabas就是他的一个方法
    至于如何使用,和一般的com对象使用是一样的!
    大概是这样的:
    __DBEngine36.CompactDatabase(database.DatabaseName, tempfile, '', 0, ';pwd=你的数据库密码');
      

  7.   

    可在程序中拷贝数据库文件,这样最方便
    MSN:[email protected]
      

  8.   

    直接用copyfile就行了
    谢谢了哟
      

  9.   

    我的毕业设计用到过了,就是把mdb文件考到其他地方,恢复就是再考回来。考前要断开数据库连接。说是这样的,我试了试,没有断开也行??????!!!!!!
      

  10.   

    楼上的叶男先生,你的我大概看懂了些,这些里面,你的方式是最好的,
    但是,我好像没有看到恢复回去的片断。难道,你也是用文件拷贝方式将
    备份好的文件改为现在的名字来完成?
    [email protected]