Public Function Compact(stDataFile As String) As Boolean
'This function will backup and compact the mdb file given by the stDataFile path.
'Manually backup and test debug it first!
Dim stOutFile As String, stBackUpFile As String
If LCase(Right(stDataFile, 4)) <> ".mdb" Then
'-- Incomplete FileName string
Compact = False '-- Set Failure code
Exit Function
End If
stOutFile = Left$(stDataFile, Len(stDataFile) - 4) & ".CMP"
DoCmd.SetWarnings False
DoCmd.Hourglass True
'Delete Temporary OutputFile if exists
On Error Resume Next
Kill stOutFile
On Error GoTo Err_Function
'Backup
stBackUpFile = Left(stDataFile, Len(stDataFile) - 4) & ".BAK"
On Error Resume Next
Kill stBackUpFile
On Error GoTo Err_Function
FileCopy stDataFile, stBackUpFile
'Compact
DBEngine.CompactDatabase stDataFile, stOutFile, DB_LANG_GENERAL
'Delete Uncompacted Version
Kill stDataFile
'Rename Compacted Version
Name stOutFile As stDataFile
Compact = True
Exit_Function:
DoCmd.SetWarnings True
DoCmd.Hourglass False
Exit Function
Err_Function:
Compact = False
Call LogError(Err.Number, Err.Description, "Compact() in basUtilities")
Resume Exit_Function
End Function