这几天都在学怎么去做数据库备份 也看懂了一个用FSO的filecopy的例子 但是由于哪个路径设置不符合要求,所以一定要用CommonDialog来指定路径 下面是我自己写的一部分 但是关键的BackupData 部分却不会写 肯定高人帮我补充一下.数据库名称123.mdb 最好备份出来的格式是加密的.
另外按这样的格式在写个数据恢复的。不胜感激.....Private Sub Command1_Click()On Error GoTo failure
With CommonDialog1
.DialogTitle = "数据库备份为.."
.ShowSave
If Len(.filename) = 0 Then Exit Sub
If BackupData(DataPath, .filename) = 1 Then
MsgBox "备份成功!"
'写入系统日志
frmbf.WriteLog ("备份数据") ' Else
failure:
MsgBox Str(BackupData(DataPath, .filename))
MsgBox "备份失败!"
End If
End With
End Sub
Private Function BackupData(ByVal filepath As String, ByVal filename As String) As Integer
???????
?????? ? 这里不会写
??????
??????
end function
另外按这样的格式在写个数据恢复的。不胜感激.....Private Sub Command1_Click()On Error GoTo failure
With CommonDialog1
.DialogTitle = "数据库备份为.."
.ShowSave
If Len(.filename) = 0 Then Exit Sub
If BackupData(DataPath, .filename) = 1 Then
MsgBox "备份成功!"
'写入系统日志
frmbf.WriteLog ("备份数据") ' Else
failure:
MsgBox Str(BackupData(DataPath, .filename))
MsgBox "备份失败!"
End If
End With
End Sub
Private Function BackupData(ByVal filepath As String, ByVal filename As String) As Integer
???????
?????? ? 这里不会写
??????
??????
end function
呵呵,看不懂就要努力啊简单点的就在备份前切断数据库连接,然后用filecopy复制文件,恢复同理(先kill掉原来的文件,然后filecopy)
重要是没有这样的思路
Private Sub bf_Click()
If Dir(App.Path + "\ck.ldb") <> "" Then
MsgBox "数据库未关闭或未完全释放!请关闭数据库或退出后再试。", 16, "错误"
Exit Sub
End If If Dir(App.Path + "\ck.mdb") = "" Then
MsgBox "源数据库不存在!请检查备份数据库文件。", 16, "错误"
Exit Sub
End If With dlg
.FileName = ""
.Filter = "Access File *.MDB|*.MDB"
.ShowSave
End With wxdb = dlg.FileName + ".mdb"
wxdb1 = App.Path + "\ck.mdb" If wxdb = ".mdb" Then
Exit Sub
Else If StrComp(wxdb, wxdb1, 1) = 0 Then
MsgBox "不能覆盖源文件,请选择其它路径或不同的文件名!", 16, "错误"
Else
FileCopy App.Path + "\ck.mdb", wxdb
MsgBox "数据库备份成功!", "64", "提示"
End If End If
End Sub'压缩数据库
Private Sub zip_Click() If Dir(App.Path + "\ck.ldb") <> "" Then
MsgBox "数据库未关闭或未完全释放!请关闭数据库或退出后再试。", 16, "错误"
Exit Sub
End If If Dir(App.Path + "\ck.mdb") = "" Then
MsgBox "源数据库不存在!请检查备份数据库文件。", 16, "错误"
Exit Sub
End If sourdb = App.Path + "\ck.mdb" If Dir(App.Path + "\backup", vbDirectory) = "" Then '如果目录不存在的话,就新建一个
MkDir App.Path + "\backup"
End If Dim zipm As String
zipm = Format(Now, "yyyy.mm.dd") + "压缩" '取得当前日期 desdb = App.Path + "\backup\" + zipm + ".mdb" compactDB sourdb, desdb '调用模块 MsgBox "数据库压缩成功!", "64", "提示"End Sub'恢复数据库
Private Sub xf_Click()
On Error Resume Next
With dlg
.FileName = ""
.Filter = "Access File *.mdb|*.mdb"
.ShowOpen
End With If dlg.FileName = "" Then
Exit Sub
Else
wxdb = dlg.FileName
End If If Dir(App.Path + "\ck.ldb") <> "" Then
MsgBox "请先关闭数据库!", 16, "错误"
Exit Sub Else If wxdb = "" Then
Exit Sub
Else
FileCopy wxdb, App.Path + "\ck.mdb"
MsgBox "数据库恢复成功!", "64", "提示"
End If End IfEnd Sub'添加Module'*************************压缩数据库模块********************Public Function compactDB(ByVal SOUR_path As String, _
ByVal DEST_path As String) As Boolean
On Error GoTo Err_compact
Dim JRO As New JRO.JetEngine
Dim DB_sour As String, DB_dest As String
DoEvents
DB_sour = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& SOUR_path & ""
DB_dest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" _
& DEST_path & " ;Jet OLEDB:Engine Type=5;"JRO.CompactDatabase DB_sour, DB_destcompactDB = True
Exit FunctionErr_compact:
compactDB = False
' MsgBox Err.Description, vbExclamation 提示系统的错误信息---屏掉
End Function
'sDBName -- backup file anme
'msDBFileName -- in use file name
'
' Check that the user wants to backup the database
' at startup
'
If Not (moSettings.BackupDatabaseAtStart) Then 'a flag in ini file
Exit Sub
End If
sDBName = App.Path & "\codebackup.mdb"
'
' Kill the backup if it already exists
'
If Len(Dir$(sDBName)) > 0 Then
Kill sDBName
End If If Len(msDBFileName) = 0 Then MsgBox "Cannot find the last opened database : " & msDBFileName, vbInformation, App.ProductName Else 'DBEngine.CompactDatabase msDBFileName, sDBName 'DAO compact
If Len(sDBName) > 0 Then Set objJRO = New JRO.JetEngine
objJRO.CompactDatabase "Data Source=" & msDBFileName, "Data Source=" & sDBName '
' Now we remove the database
'
Kill msDBFileName
'
' Now we compact the temporary DB back into our original database
'
objJRO.CompactDatabase "Data Source=" & sDBName, "Data Source=" & msDBFileName
End If
End If