|
|
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")
|
|