Ecco une sempio di come compattare un database Access attraverso Visual Basic.
Come prima cosa vanno aggiunti al progetto i riferimenti necessari, nel nostro caso la libreria Microsoft.DAO 3.6 Object Library.
Visual Basic .Net
Dopo aver creato un progetto, selezionare il riferimento dal menù Progetto->Aggiungi riferimenti e selezionare la tab denominata Com.
Nell'elenco individuare la libreria in questione.
VB6
Dal menù Progetto selezionare la voce Riferimenti e selezionare la libreria in questione.
La sintassi, una volta inserito il riferimento, è identica per entrambi i linguaggi:
Dim dbEN As New dao.DBEngine
dbEN.CompactDatabase("nomeFileOrigine", "nomeFileDestinazione")
Qui di seguito una semplice routine che, dato un database, lo compatta e ne crea una copia di backup.
Private Sub CompattaDB(ByVal nomeFile As String)
Dim en As New dao.DBEngine
Dim f As New IO.FileInfo(nomeFile)
'
' Creo un file temporaneo nella directory temporanea del sistema
'
Dim tmp As String = IO.Path.Combine(My.Computer.FileSystem.SpecialDirectories.Temp, IO.Path.GetRandomFileName)
Try
'
' Creo il nuovo database compattato
'
en.CompactDatabase(nomeFile, tmp)
'
' Effettuo la copia di backup del database d'origine
'
f.CopyTo(IO.Path.Combine(f.Directory.ToString, f.Name & ".bak"), True)
'
' Sovrascrivo il file d'origine con il nuovo
'
Call IO.File.Copy(tmp, nomeFile, True)
'
' Elimino il file temporaneo
'
IO.File.Delete(tmp)
Catch ex As Exception
MsgBox(String.Concat(ex.Message, Environment.NewLine, "Routine CompattaDB"))
Finally
'
' Se esiste ancora il file temporaneo lo elimino
'
If IO.File.Exists(tmp) Then IO.File.Delete(tmp)
End Try
End Function