Compattazione di un Database Access
Info
Esempi
Linguaggio
Librerie
Formule
Ultimi Inseriti

 Login

 Password

Lavorando con VBA ed un database in access e facendo molte operazioni di scrittura/cancellazione la dimensione del file su disco può crescere in modo significativo, non ha una gestione dinamica dello spazio libero. Può essere recuperato facendo manualmente l'operazione in access o impostando il database in modo che sia fatto all'uscita dal programma.
Questo non è possibile però se il database è utilizzato con codice VBA come "contenitore" di dati, la macro qui sotto permette di fare questa operazione da Excel.

Function ComapttaDBAccess(NomFileCompleto As String)
  On Error GoTo Errore
    
  Dim NomFile As String
  Dim Cartella As Variant
  Dim NomeTemporaneo As Variant
    
  Dim Acc As Object
  Set Acc = CreateObject("access.application")

  NomFile = Dir(NomFileCompleto)
  Cartella = Left$(NomFileCompleto, Len(NomFileCompleto) - Len(NomFile))
  NomeTemporaneo = Cartella & "TempDatabase.mdb"
  Acc.DBEngine.CompactDatabase NomFileCompleto, NomeTemporaneo
  Acc.Quit
   
  Kill NomFileCompleto
  Name NomeTemporaneo As NomFileCompleto
    
Uscita:
  Exit Function
    
Errore:
  Select Case Err.Number
    Case 3005, 3024, 53, 3044, 76
      MsgBox "Impossibile trovare il database.", vbOKOnly
    Case 3196
      MsgBox "Il database è attualmente in uso.", vbOKOnly
    Case Else
      MsgBox "Eccezione No " & Err.Number & ". Che significa: " & Err.Description
  End Select
  Resume Uscita
End Function
 

data4idea srls - PIva 01881000937 - info@data4idea.it