本人用Commondialog控件实现了备份数据库库, 现在也想用这个方法实现还原数据库库,哪个高手可指点指点啊??

解决方案 »

  1.   

    还原数据库无非就是用备份的 mdb 文件覆盖原有的数据库。先用commondialog获得用户的备份文件(假设为backup.mdb)和原来的数据库(假设为old.mdb)然后删除 旧数据库 old.mdb,然后用FileSystemObject复制文件。        Dim fso As New FileSystemObject        Kill "c:\old.mdb"
            fso.CopyFile "c:\backup\backup.mdb", "c:\old.mdb", True
      

  2.   

    顺便问问个比较笨的问题,如果备份文件是.bak的呢?也一样吗?怎么我备份时它存放的路径与目录是跟我所选取文件进行备份的路径目录一样呢?
      

  3.   

    ' 還原這個數據庫
    Public Function DoRestore(ByVal strSourceFile As String) As Boolean
       On Error Resume Next
       Dim lFileOp  As Long
       Dim lResult  As Long
       Dim lFlags   As Long
       Dim SHFileOp As SHFILEOPSTRUCT   
       lFileOp = FO_COPY
       lFlags = lFlags And Not FOF_SILENT
       lFlags = lFlags Or FOF_NOCONFIRMATION
       lFlags = lFlags Or FOF_NOCONFIRMMKDIR
       lFlags = lFlags Or FOF_FILESONLY
       
       With SHFileOp
           .wFunc = lFileOp
           .pFrom = strSourceFile & vbNullChar
           .pTo = AppPath & "test.mdb" & vbNullChar
           .fFlags = lFlags
       End With
       lResult = SHFileOperation(SHFileOp)
       
       DoRestore = lResult = 0End Function//調用這個function就可以了
      

  4.   

    //顺便问问个比较笨的问题,如果备份文件是.bak的呢?也一样吗?怎么我备份时它存放的路径与目录是跟我所选取文件进行备份的路径目录一样呢?一楼的代码没问题的,不管是不是bak都行
    fso.CopyFile "c:\backup\backup.mdb", "c:\old.mdb", True
                                ↑              ↑
                            文件名在copy的过程中被改变了
    扩展名当然也可以改的,你可以用copy命令把abc.cba拷贝出一个cba.abc
    只要你别让源文件与目标文件既同名又同目录就行了