先关闭当前到数据库的连接,再filecopy,之后再次打开数据库。

解决方案 »

  1.   

    加入CommonDialog控件
    引用DAO3.51
    引用ADO 2.1Library
    数据库中有几个表就打开几个表来备份。(应该可以的,我试过)
    如果有什么新的发现就发信给我  [email protected] Sub dbbak_Click()         '数据库备份
    On Error GoTo ex
    Dim strdbname As String
    Dim db As Database
    Dim strdb As String
    Dim workdb As Database
    Dim qdf As QueryDef
    '------------
    CommonDialog.Filter = "Access Database (*.MDB)|*.mdb"
    CommonDialog.ShowSave
    If Len(Form1.CommonDialog.FileName) > 0 Then
       strdbname = Form1.CommonDialog.FileName
      If InStr(strdbname, ".") = 0 Then
        strdbname = strdbname & ".mdb"
      End If
      If Dir(strdbname) <> vbNullString Then
       If MsgBox(strdbname & "已经存在,要替换该文件吗?", vbQuestion + vbYesNo, "提示") = vbYes Then
         Kill strdbname
       Else
         Exit Sub
       End If
      End If
      Else
      Exit Sub
    End If
    If Len(strdbname) = 0 Then Exit Sub
    Set db = CreateDatabase(strdbname, dbLangGeneral, dbEncrypt)
    db.Close
    Set db = NothingIf Right$(Trim$(App.Path), 1) = "\" Then
       Set workdb = OpenDatabase(App.Path & "db1.mdb")
    Else
        Set workdb = OpenDatabase(App.Path & "\db1.mdb")
    End If
    '------------
    strdb = "select 用户表.* into 用户表 in '" & strdbname & " 'from 用户表"
    Set qdf = workdb.CreateQueryDef("user_qdf", strdb)
    If Err.Number = 424 Then
      workdb.QueryDefs.Delete "user_qdf"
      Set qdf = workdb.CreateQueryDef("user_qdf", strdb)
    End If
    qdf.Execute
    workdb.QueryDefs.Delete "user_qdf"strdb = "select 操作员表.* into 操作员表 in '" & strdbname & " 'from 操作员表"
    Set qdf = workdb.CreateQueryDef("user_qdf", strdb)
    If Err.Number = 424 Then
      workdb.QueryDefs.Delete "user_qdf"
      Set qdf = workdb.CreateQueryDef("user_qdf", strdb)
    End If
    qdf.Execute
    workdb.QueryDefs.Delete "user_qdf"
    '------------
    Set qdf = Nothing
    workdb.Close
    Set workdb = Nothing
    MsgBox "数据库已经成功备份!", 48, "提示"
    Exit Sub
    ex:
     Exit Sub
    End Sub