2017-02-22 86 views
0

我有这个代码,我得到了某处(信贷给作者),并修改了一下,以便每7天对数据库进行一次自动备份。自动备份访问数据库

Function fMakeBackup() As Boolean 

    Dim Source As String 
    Dim Target As String 
    Dim retval As Integer 

On Error GoTo sysBackup_Err 

    Source = CurrentDb.name 

    Target = "d:\" 
    Target = Target & Format(Date, "mm-dd-yyyy") & " " 
    Target = Target & Format(Time, "hh-mm") & ".accdb" 

    If DateDiff("d", DLookup("[BackupDate]", "WinAutoBackup", "[BckID] =1"), Date) = 7 Then 

    retval = 0 
    Dim objFSO As Object 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    retval = objFSO.CopyFile(Source, Target, True) 
    Set objFSO = Nothing 

    DoCmd.SetWarnings False 
     DoCmd.RunSQL "UPDATE WinAutoBackup SET WinAutoBackup.BackupDate = Date();" 
    DoCmd.SetWarnings True 

    MsgBox "Backup successfull. Next auto backup in 7 days" 

    Else 
    Exit Function 
    End If 

sysBackup_Exit: 
Exit Function 

sysBackup_Err: 
MsgBox Err.Description, , "sysBackup()" 
Resume sysBackup_Exit 
End Function 

我怎么能修改路径,使所有的备份文件进入一个文件夹,名为备份 同一目录内的主要后端数据库文件?

回答

0

更换

Target = "d:\" 
Target = Target & Format(Date, "mm-dd-yyyy") & " " 
Target = Target & Format(Time, "hh-mm") & ".accdb" 

这个地方f:\databasefolder是驱动器/文件夹牵着你的后端数据库文件:

Target = "f:\databasefolder\backups\" 
Target = Target & Format(Now, "yyyymmdd-hhnn") & ".accdb" 
+0

Thx Gustav。但我可能需要随时修改此路径,以便在另一台计算机上使用该数据库。特别是如果没有驱动器f:\。有没有办法让系统自行识别路径,以便不需要总是修改vba代码? – ezybusy

0

使用CurrentProject.path返回该数据库正在从使用。