Private Declare Function CopyFile Lib "kernel32" Alias "CopyFileA" (ByVal lpExistingFileName As String, ByVal lpNewFileName As String, ByVal bFailIfExists As Long) As Long Private Sub Form_Load() CopyFile "c:\new.mdb", "d:\new2004-06-08.mdb", 0 End Sub
要引用msjro.dll(Microsoft Jet and Replication Objects 2.6 Library) '压缩修复并备份数据库 Public Sub CompactMDB() 'On Error GoTo mdberr Dim strMdbName As String '数据库名 Dim strTempName As String '备份路径 Dim strSource As String Dim strDest As String Dim mdbjro As JRO.JetEngine
Private Sub Form_Load()
CopyFile "c:\new.mdb", "d:\new2004-06-08.mdb", 0
End Sub
'压缩修复并备份数据库
Public Sub CompactMDB()
'On Error GoTo mdberr
Dim strMdbName As String '数据库名
Dim strTempName As String '备份路径
Dim strSource As String
Dim strDest As String
Dim mdbjro As JRO.JetEngine
strMdbName = App.Path & "\data\test.mdb"
strTempName = App.Path & "\data\MDBbak.mdb"
strSource = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strMdbName & ";Jet OLEDB:Database Password=aaaa"
strDest = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strTempName & ";Jet OLEDB:Database Password=aaaa"
Set mdbjro = New JRO.JetEngine
If UCase(Dir(strTempName)) = UCase("MDBbak.mdb") Then '判断备份文件是否存在
Kill strTempName '存在则删除
End If
mdbjro.CompactDatabase strSource, strDest '开始压缩
mdberr:
MsgBox ("数据库损坏,请查看帮助文件!如果无法处理,请与软件供应商联系。"), vbOKOnly + vbExclamation, "数据库出错!"
End
End Sub
cn.Close
恢复前也要关闭连接,把备份copy过来覆盖原文件就可以了