Deze code comprimeert een AccessDatabase. Alvorens hij dit doet wordt er een backup gemaakt met de datum in de bestandsnaam. Code naar eigen smaak inrichten.
Indien mensen het willen wil ik er wel een aparte tool voor maken.
Zet de reference naar: Micorsoft Jet and Replication Objects 2.x Library
Plaats de code in het formulier:
- Code: Selecteer alles
Private Const Provider = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source="
Private Const JetVersion = ";Jet OLEDB:Engine Type=5"
Private Sub Command1_Click()
On Error GoTo ErrBackupDB
Dim fName As String
fName = "Test.mdb"
FileCopy App.Path & "\Test.mdb", App.Path & "\Backup\" & Format(Now, "mm-dd-yyyy") & " " & fName
CompactDatabase App.Path & "\Test.mdb", ""
Exit Sub
ErrBackupDB:
MsgBox Err.Description
End Sub
' -----------------------------------------------------------------------------
Private Sub CompactDatabase(pstrDatabase As String, Optional pstrPassword As String)
On Error GoTo CompactDatabaseErr
Dim JRO As JetEngine
Dim strPassword As String
Dim strTemp As String
' Generate temporary file name
strTemp = Left(pstrDatabase, InStrRev(pstrDatabase, "\")) & "Compact.mdb"
If Len(Dir(strTemp)) <> 0 Then Kill strTemp
' Create password string
If Len(pstrPassword) <> 0 Then strPassword = ";Jet OLEDB:Database Password=" & pstrPassword
' Compact database
Set JRO = New JetEngine
JRO.CompactDatabase Provider & pstrDatabase & strPassword, Provider & strTemp & JetVersion & strPassword
Set JRO = Nothing
Kill pstrDatabase ' Copy compacted version over old one
Name strTemp As pstrDatabase
MsgBox "Database compression and backup completed ", vbInformation + vbOKOnly, "Database info"
CompactDatabaseExit:
Exit Sub
CompactDatabaseErr:
MsgBox Err.Description, vbInformation, "Notice"
Resume CompactDatabaseExit
End Sub
