对Access进行备份,以哪种方式进行备份好?在VB中进行操作!
欢迎各位提出宝贵的意见!

解决方案 »

  1.   

    最好分2个程序。一个是主程序,对数据库操作的。  还有一个是备份的程序。
    用Copy就可以了。
      

  2.   

    '先引用 microsoft jet and replication objects 2.6 library'恢复和备份MDB数据库
    '函数名:BakResumeMdb
    '参数:P_Cnn ADODB连接,SourFileName 源文件名,ObjFileName 目标文件名,
    '     Provider Provider参数(视JET版而定,默认是4.0),UserID 用户名,
    '     UserPwd 密码,WorkType 操作类型(0 备份,1 恢复)
    '返回值:TRUE 成功,FALSE 失败.
    '注:当WorkType=0时,源文件名是要备份文件,目标文件名是备份文件.
    '   当WorkType=1时,源文件名是备份文件,目标文件名要恢复的文件.Public Function BakResumeMDB(P_Cnn As ADODB.Connection, _
                           SourFileName As String, _
                           ObjFileName As String, _
                           Optional Provider As String = "Microsoft.Jet.OLEDB.4.0", _
                           Optional UserID As String = "admin", _
                           Optional UserPwd As String = "", _
                           Optional WorkType As Long = 0) As Boolean
        
        Dim Yjro As New JRO.JetEngine
        Dim WorkPath As String
        Dim FileCon As New SmFileCls
        
        On Error Resume Next
        '/关闭连接
        P_Cnn.Close: Set P_Cnn = Nothing
        DoEvents
        '/-------------------------------
        '/压缩
        Yjro.CompactDatabase "Provider=" & Provider & SourFileName & ";" & _
                             "Jet OLEDB:Database Password=" & UserPwd & ";" & _
                             "User ID=" & UserID & ";", _
                             "Provider=" & Provider & ";Data Source=" & ObjFileName & ";" & _
                             "Jet OLEDB:Database Password=" & UserPwd & ";" & _
                             "User ID=" & UserID & ";"
        DoEvents
        '/删除旧文件,将压缩后的文件COPY到旧置
        If Not (FileCon.FileOccur(SourFileName) And FileCon.FileOccur(ObjFileName)) Then
           If WorkType = 0 Then
              '/备份
              Call CreateMdbConn(P_Cnn, SourFileName, , UserID, UserPwd)
           Else
              '/压缩
              Call CreateMdbConn(P_Cnn, ObjFileName, , UserID, UserPwd)
           End If
           Err.Number = -1
        End If
        Set FileCon = Nothing
        Set Yjro = Nothing: Err.Clear
        BakResumeMDB = (Err.Number = 0)
    End Function
    '
    '创建一个连接(连接到ACCESS)
    '函数名:CreateMdbConn
    '参数:  DbConnection ADODB连接,MdbPath ACCESS数据库路径,Provider JET引擎版本,UserID 登录用户名,UserWord 登录密码
    '返回值:TRUE 连接成功.FALSE 连接失败.
    '例:    CreateMdbConn p_cnn,"C:\DEMO.MDB","sa","123"Public Function CreateMdbConn(ByRef DbConnection As ADODB.Connection, _
                                  MdbPath As String, _
                                  Optional Provider = "Microsoft.Jet.OLEDB.4.0;", _
                                  Optional UserID As String = "admin", _
                                  Optional UserWord As String = "") As Boolean
      Dim ConStr As String
        
      On Error Resume Next
      
      If DbConnection.State = adStateOpen And Not IsEmpty(adStateOpen) Then
         DbConnection.Close
      End If
      '/------------------------------------------------------------------
      ConStr = "Provider=" & Provider & _
               "Data Source=" & MdbPath & ";" & _
               "Jet OLEDB:Database Password=" & UserWord & ";" & _
               "User ID=" & UserID & ";"
      
      DbConnection.ConnectionString = ConStr
      DbConnection.Open
      DoEvents  If Err.Number = 0 Then
         CreateMdbConn = True
      Else
         Err.Clear
         CreateMdbConn = False
      End If
    End Function