Public Sub meCopyMDB() Static bCopied As Boolean Static dCopyDate As Date Dim Source As String Dim destination As String Dim strMsg As String On Error GoTo errCopyMDB If dCopyDate = Date Then bCopied = True Else bCopied = False End If If bCopied Then MsgBox "今天已经备份过数据库文件了!", vbInformation, "数据备份" Exit Sub End If Source = "mdb\db1.mdb" destination = "数据库备份\dat1.mdb" strMsg = "源数据库文件是: " & Source & Chr(13) & Chr(10) _ & "备份数据库文件是:" & destination & Chr(13) & Chr(10) _ & Chr(13) _ & "要备份吗?"
If MsgBox(strMsg, vbYesNo + vbQuestion, "数据备份") = vbNo Then Exit Sub
If Dir(Source) = "" Then '--------------------------------------------- 1. strMsg = "数据库文件: " & Source & " 丢失.备份失败!" & Chr(13) & Chr(10) _ & "请通知有关人员恢复此文件!" MsgBox strMsg, vbExclamation, "备份失败!" Else If Dir("数据库备份\", vbDirectory) = "" Then '--- 2. MkDir ("数据库备份\") MsgBox "在C:盘安装目录建立了一个备份文件夹:数据库备份\", vbInformation, "数据备份" End If
FileCopy Source, destination bCopied = True dCopyDate = Date
MsgBox "备份结束.", vbInformation, "数据备份"
End If '------------------------------------------------------------ 1. Exit Sub errCopyMDB: Call meErr("meCopyMDB") End Sub 代码应该没问题,有时候也能备份上,有时不可以
在备份时候关闭掉要备份的MDB文件。
我在程序中没有打开数据库呀,利用FileCopy来备份的
不是这个意思,我是指你在备份前,先手动把ACCESS关闭掉,并非叫你关闭程序中引用的ADO对象。
肯定有打开了,可以先执行下列程序,然后就可以用filecopy了,这是DAO的,你可能要修改一下Public Sub CloseDBConnect() ' 关闭数据库对象并且释放内存 On Error Resume Next
Dim WS As Workspace Dim DB As Database Dim rs As Recordset
For Each WS In Workspaces For Each DB In WS.Databases For Each rs In DB.Recordsets rs.Close Set rs = Nothing Next DB.Close Set DB = Nothing Next WS.Close Set WS = Nothing Next End Sub
http://community.csdn.net/Expert/FAQ/FAQ_Index.asp?id=195584
建立日期: 1999年2月13日 最后修改日期:1999年2月13日
所属类别: Visual Basic - 数据库
Visual Basic - 错误信息
Visual Basic - 磁盘、文件和目录 mj:
我有一个问题想请教,就是我在程序中想备份ACCESS数据库文件,使用FILECOPY,但程序总是显示“实时错误:70,被拒绝的权限”,不知为何?还望指教。 回答: 估计你在复制文件的时候,你的数据库被打开了。如果数据库被打开(除非你的数据库是以只读方式打开的),读文件操作会被禁止,所以无法拷贝文件。解决的办法就是暂时关闭数据库(包括数据控件)。 此问题由李海回答。
Static bCopied As Boolean
Static dCopyDate As Date
Dim Source As String
Dim destination As String
Dim strMsg As String
On Error GoTo errCopyMDB
If dCopyDate = Date Then
bCopied = True
Else
bCopied = False
End If
If bCopied Then
MsgBox "今天已经备份过数据库文件了!", vbInformation, "数据备份"
Exit Sub
End If
Source = "mdb\db1.mdb"
destination = "数据库备份\dat1.mdb"
strMsg = "源数据库文件是: " & Source & Chr(13) & Chr(10) _
& "备份数据库文件是:" & destination & Chr(13) & Chr(10) _
& Chr(13) _
& "要备份吗?"
If MsgBox(strMsg, vbYesNo + vbQuestion, "数据备份") = vbNo Then Exit Sub
If Dir(Source) = "" Then '--------------------------------------------- 1.
strMsg = "数据库文件: " & Source & " 丢失.备份失败!" & Chr(13) & Chr(10) _
& "请通知有关人员恢复此文件!"
MsgBox strMsg, vbExclamation, "备份失败!"
Else
If Dir("数据库备份\", vbDirectory) = "" Then '--- 2.
MkDir ("数据库备份\")
MsgBox "在C:盘安装目录建立了一个备份文件夹:数据库备份\", vbInformation, "数据备份"
End If
FileCopy Source, destination
bCopied = True
dCopyDate = Date
MsgBox "备份结束.", vbInformation, "数据备份"
End If '------------------------------------------------------------ 1.
Exit Sub
errCopyMDB:
Call meErr("meCopyMDB")
End Sub
代码应该没问题,有时候也能备份上,有时不可以
' 关闭数据库对象并且释放内存
On Error Resume Next
Dim WS As Workspace
Dim DB As Database
Dim rs As Recordset
For Each WS In Workspaces
For Each DB In WS.Databases
For Each rs In DB.Recordsets
rs.Close
Set rs = Nothing
Next
DB.Close
Set DB = Nothing
Next
WS.Close
Set WS = Nothing
Next
End Sub
例如:在Windows2000上运行需要Administrator级权限