Viele Anwender suchen nach einer Möglichkeit, die aktuelle Datenbank nach dem Verlassen per VBA-Prozedur automatisch in ein Backup-Verzeichnis zu kopieren.
Das ist aber leider nicht ohne Weiteres möglich, weil ab dem Moment, wo eine Datenbank geschlossen wird, keine Prozeduren mehr ausgeführt werden können.
Auch der Trick, entsprechende Anweisungen (FileCopy…) in einem versteckt angezeigten Formular in dessen Ereignisprozedur „Beim Schließen“ auszuführen, scheitert, da Access die Datenbank sperrt.
Lösen lässt sich diese Aufgabe jedoch in einer Kombination aus Batch-Datei und Verknüpfung wie folgt:
- Öffnen Sie ein Fenster mit einer Eingabeaufforderung und geben Sie dort die folgende Anweisung ein:
edit Name.bat„Name“ ersetzen Sie dabei durch einen Namen für die Batch-Datei, also beispielsweise dem Namen der Datenbank. Achtung! Der Name darf nur maximal acht Zeichen lang sein! - Geben Sie in Edit die folgenden Anweisungen ein:
@echo off
cls
start /w msaccess.exe „Z:\Test\Name.mdb“
copy „Z:\Test\Name.mdb“ „Z:\Datsi\Name.mdb“
exitPfad und Dateinamen passen Sie entsprechend Ihrer Umgebung an. Auch hier dürfen Dateinamen nicht länger als acht und Verzeichnisnamen nicht länger als elf Zeichen sein! - Speichern Sie die Batch-Datei und verlassen Sie den Editor.
- Legen Sie auf dem Desktop eine Verknüpfung zu der eben erstellten Batch- Datei an. Über diese Verknüpfung wird die Datenbank künftig per Doppelklick und einem kleinen Umweg über die Batch-Datei geöffnet.
Der DOS-Befehl „start“ führt eine Anwendung, hier „msaccess.exe“, aus, wo – bei der Parameter „/w“ (wait, warten…) dafür sorgt, dass die weiteren Anweisungen erst ausgeführt werden, wenn die Anwendung beendet wurde.
Nach dem Beenden von Access wird dann per DOS-Befehl „copy“ eine Kopie angelegt.
Möchten Sie vor der Bearbeitung der Datenbank eine Sicherungskopie anlegen, so drehen Sie die Anweisungen einfach um:
@echo off
cls
copy „Z:\Test\Name.mdb“
„Z:\Datsi\Name.mdb“
start msaccess.exe
„Z:\Test\Name.mdb“
exit
Der Parameter „/w“ ist hier nicht mehr nötig, da die Kopie ja schon erstellt wurde und auf eine Beendigung von Access nicht mehr gewartet werden muss.
Der DOS-Befehl „start“ steht normalerweise ab Windows XP nicht mehr zur Verfügung. Er wurde von Microsoft aus Windows NT, 2000 und XP verbannt, ob wohl er dort einwandfrei funktioniert. Kopieren Sie „start.exe“ einfach aus einer alten Windows 9x-Installation (zu finden beispielsweise in C:\Windows\Command) in das Windows-Verzeichnis der NT-, 2000- oder XP-Installation, damit die oben gezeigte Lösung auch unter diesen Systemen funktioniert!