以下是我参考别人的数据库备份程序,但在程序运行时
在FileCopy bpath, epath这行出现错误
实时错误'70'
拒绝的权限
我在程序中已经将数据库关闭了
可为什么还是 出现这样的错误?
有没有更好的解决办法?
如何在备份数据库是可以提示用户自己选择备份的路径?
请赐教
非常感谢Private Sub CmdBackup_Click()
Dim bpath, epath As String
If Dir(App.Path & "\Backup\", vbDirectory) = "" Then
MkDir App.Path & "\Backup\"
End If
If MsgBox("确定要进行数据备份?", vbYesNo + vbQuestion, "提示") = vbYes Then
If db.State = adStateOpen Then db.Close
Set db = Nothing
bpath = "" & App.Path & "\" & "data\workhourdatabase.mdb"
epath = "" & App.Path & "\Backup\" & Year(Date) & "-" & Month(Date) & ".mdb"
FileCopy bpath, epath
MsgBox "备份完毕 ", vbInformation, "数据备份"
cn.Open
Else
Exit Sub
End If
end sub
在FileCopy bpath, epath这行出现错误
实时错误'70'
拒绝的权限
我在程序中已经将数据库关闭了
可为什么还是 出现这样的错误?
有没有更好的解决办法?
如何在备份数据库是可以提示用户自己选择备份的路径?
请赐教
非常感谢Private Sub CmdBackup_Click()
Dim bpath, epath As String
If Dir(App.Path & "\Backup\", vbDirectory) = "" Then
MkDir App.Path & "\Backup\"
End If
If MsgBox("确定要进行数据备份?", vbYesNo + vbQuestion, "提示") = vbYes Then
If db.State = adStateOpen Then db.Close
Set db = Nothing
bpath = "" & App.Path & "\" & "data\workhourdatabase.mdb"
epath = "" & App.Path & "\Backup\" & Year(Date) & "-" & Month(Date) & ".mdb"
FileCopy bpath, epath
MsgBox "备份完毕 ", vbInformation, "数据备份"
cn.Open
Else
Exit Sub
End If
end sub
'StrBack是备份文件目的路径和名称
Dim miJRO As jro.JetEngine
Set miJRO = New jro.JetEngine
miJRO.CompactDatabase "Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & App.Path & "\db1.mdb;" _
& "Jet OLEDB:Database Password=abc", _
"Provider=Microsoft.Jet.OLEDB.4.0; " _
& "Data Source=" & StrBack & ";" _
& "Jet OLEDB:Database Password=abc"
End SubPrivate Sub cmd_Click()
Dim Str As String
CommonDialog1.Filter = "数据库文件(*.mdb)|*.mdb"
CommonDialog1.FilterIndex = 2
CommonDialog1.DialogTitle = "选择备份文件名称"
CommonDialog1.ShowOpen
Str = CommonDialog1.FileName
'检查目标文件名称是否存在,存在则要先删除
If Dir(Str) <> "" Then
Kill Str
End If
Call BackupMdb(Str)
MsgBox "数据备份完成!为了你的数据安全,请经常备份数据库。", _
vbOKOnly + vbExclamation, "提示"
End Sub
DBEngine.CompactDatabase DataPath, IIf(Right(SHstr, 1) = "\", SHstr & "smdb.bak", SHstr & "\smdb.bak"), False, False, SysDataPwd''DataPath Mdb文件全路径 SHstr 备份路径 smdb.bak 备份后文件名 SysDataPwd 数据库密码
Dim Lbool As Boolean
str = "D:\bak\" + Format(Date, "yyyymmdd")
MkDir (str)
str = str + "\数据库备份001.dat" '备份目的路径及名称
Lbool = CopyFile([被备份的数据库路径及名称], str, True)
If Lbool = False Then
MsgBox "帐套数据时出错,因为:" + Err.Description + "(错误号:" + CStr(Err.Number) + ")", vbCritical, "有错误发生 . . . "
Else
MsgBox "备份完毕,您的备份文件存放路经及名称为:" + str
End If
FileCopy语句 如果想要对一个已打开的文件使用,则会产生错误
再检查!
if rs.state<>1 then rs.close
if cn.State<>1 then cn.close
filecopy ... ...
Public Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal SoureFile As String, ByVal DestFile As String, ByVal bBool As Boolean) As Boolean可直接用 CopyFile 来备份文件,即使原来的文件是打开的也可以的;
注意:是 CopyFile 并非 FileCopy具体方法参照上上楼的写法!
例如:
FileSystemObject.CopyFile "c:\mydocuments\letters\*.doc", "c:\tempfolder\"But you can't use:FileSystemObject.CopyFile "c:\mydocuments\*\R1???97.xls", "c:\tempfolder"
在使用时需要事先在 VB 中引用 “Microsoft Scripting Runtime”,该类型库位于:scrrun.dll 文件中。复制文件方法 CopyFile 同上!即:object.CopyFile source, destination[, overwrite]