Tipps "n" Tricks
Anwender-Software - Access

Last Update: 24. Dezember 2001/Webmaster

Externe Datenbank per VBA komprimieren

Thema:

Access 97/2000
Problem: Ich habe meine Anwendung in eine Front-End- und eine Back-End-Datenbank aufgeteilt. Da das Back-End sämtliche Tabellen enthält, soll es möglichst komfortabel per Mausklick aus dem Front-End heraus komprimiert werden. Wie kann man das am einfachsten realisieren?

Lösung:

Access bietet eine CompactDatabase-Methode, die diese Aufgabe übernehmen kann. Es gibt allerdings zwei Besonderheiten zu beachten:
  • "CompactDatabase" kann die komprimierte Datenbank nicht unter Ihrem Originalnamen speichern, sondern erfordert die Angabe eines neuen Dateinamens. Sie müssen daher anschliessend die alte Datenbank löschen und die komprimierte Datei umbenennen.
  • Bevor Sie die Komprimierung starten können, muss sichergestellt sein, dass keine Formulare, Berichte oder Abfragen auf das Back-End zugreifen.
So könnte eine entsprechende Lösung aussehen:

Function funcDbKomprimieren(strOriginalDB As String, _
         strTempDb As String) As Boolean

On Error GoTo ErrorHandler

  DAO.DBEngine.CompactDatabase strOriginalDB, strTempDb
  Kill strOriginalDB
  Name strTempDb As strOriginalDB

  funcDbKomprimieren = True

Exit Function

ErrorHandler:

  If Err.Number = 3356 Then
    MsgBox "Die Datenbank " & strOriginalDB & _
    " kann nicht zum Komprimieren geöffnet werden. " & _
    "Bitte stellen Sie sicher, dass alle Anwender " & _
    abgemeldet sind.", vbOKOnly + vbCritical, _
    "SmartTools Access Weekly"
  Else
    MsgBox "Der folgende Fehler ist aufgetreten: " & _
    Err.Number & " - " & Err.Description, vbCritical + _
    vbOKOnly, "SmartTools Access Weekly"
  End If

  funcDbKomprimieren = False

End Function

Sie können mit dieser Funktion jede beliebige externe Datenbank per Mausklick komprimieren. Zum Aufruf übergeben Sie lediglich den Namen der Original-Datenbank und den Namen, der temporär für die komprimierte Version verwendet werden soll. Also zum Beispiel:

funcDbKomprimieren("C:\Datenbanken\
 Back-End.mdb", "C:\Datenbanken\Back-End2.mdb")

 

Tipps "n" Tricks
Anwender-Software - Access