Karl Donaubauer, Wien
In der Access-FAQ von Karl Donaubauer (www.donkarl.com) finden Sie die häufigsten Fragen und Anworten zum Thema Microsoft Access. In dieser Beitragsreihe werden die wichtigsten Einträge im Detail vorgestellt und entsprechende Lösungen anhand praxisnaher Beispiele aufgezeigt. Im ersten Teil lernen Sie die Lösungen zu den meistgenannten Problemen der Teilnehmer der deutschsprachigen Access-Newsgroups in Zusammenhang mit dem Starten einer Access-Datenbank kennen.
Hinweis
Auf der beiliegenden Heft-CD finden Sie die Beispieldatenbanken zu der vorliegenden Musterlösung unter den Dateinamen Hauptfenster_ausblenden97.mdb (Access 97) und Hauptfenster_ausblenden00.mdb (Access 2000 und Access XP).
Access bietet recht unterschiedliche Methoden und eine große Anzahl an Einstellungsmöglichkeiten, um Aktionen “automatisch” beim Starten einer Datenbank ausführen zu lassen. Im Wesentlichen sind es drei Methoden beziehungsweise Herangehensweisen, die bei der Automatisierung von Startvorgängen eine Rolle spielen:
Menü Extras/Start
Seit Access 95 gibt es das Menü Extras/Start. Der Dialog Start (siehe Bild 1) stellt die einfachste Möglichkeit zur Verfügung, Start-Einstellungen für eine Datenbank vorzunehmen.
Bild 1: Das Dialogfeld Start
Die wichtigste Option ist Formular anzeigen. Damit legen Sie fest, welches Formular beim Start der Datenbank automatisch geöffnet werden soll.
Weitere Einstellungen betreffen vor allem das Aussehen des Anwendungsfensters bezüglich Titelleiste, Menüs oder Datenbankfenster. Die meisten Optionen im Dialogfeld erklären sich ohnehin von selbst.
Bild 2: Das Makro Autoexec führt Code aus und öffnet das Startformular.
Bild 3: Das Makro Autoexec öffnet das Startformular, wenn die Bedingung wahr ist.
Das Startformular lässt sich also recht einfach festlegen. Das waren aber auch schon alle Einstellmöglichkeiten zum Auslösen von Aktionen. Wenn nach dem Starten noch mehr passieren soll, müssen Sie entsprechende Programmierungen im Startformular vornehmen. Meist geschieht das im Ereignis Beim öffnen des jeweiligen Formulars.
übliche Vorgänge, die man hier programmiert, sind zum Beispiel das Aufrufen von selbst erstellten VBA-Funktionen, die prüfen, wie der Rechner heißt oder ob eine eventuell vorhandene Backend-Datenbank noch am gewünschten Ort ist.
Im letzteren Fall ist es am einfachsten, ein ungebundenes Startformular zu verwenden, um bei falsch eingebundenen Tabellen keine Fehlermeldung zu erhalten. Ein Nachteil der Einstellung im Start-Dialog ist also, dass alle weiteren Aktionen frühestens beim öffnen des Startformulars veranlasst werden können. Das ist einer der Gründe, warum es immer noch das Autoexec-Makro gibt.
Makro Autoexec
In allen Versionen von Access besteht die Möglichkeit, ein Makro namens Autoexec zu verwenden, das aufgrund dieses Namens beim Starten der Datenbank automatisch abgearbeitet wird.
Es stellt auch in den neueren Access-Versionen noch eine überlegenswerte Alternative oder Ergänzung zum Menü Extras/Start dar. Makros haben zwar erhebliche Nachteile gegenüber VBA, da sie unter anderem keine Fehlerbehandlung haben, sind aber für ein paar wenige, gezielte Einsätze in Access durchaus sinnvoll. Viele Entwickler verwenden etwa folgende Kombination: das Startmenü, um die dort einfacher zu treffenden Starteinstellungen vorzunehmen, und das Autoexec-Makro, um VBA-Code – unabhängig von einem bestimmten Startformular – anzustoßen.
Access arbeitet übrigens zuerst die Einstellungen aus dem Start-Menü ab, danach erst das Autoexec-Makro. Das ist eine wichtige Tatsache, wenn Sie eine Kombination der beiden Methoden verwenden möchten. Nehmen wir an, Sie überprüfen beim Start der Datenbank die Verknüpfungen zum Backend und das Startformular ist an eine verknüpfte Tabelle gebunden. Wenn Sie nun das Startformular über das Startmenü öffnen lassen, erhalten Sie bei falsch eingebundenen Tabellen unweigerlich eine Fehlermeldung wegen der nicht gefundenen Backend-Datei. Deshalb müssen Sie das Startformular entweder direkt im prüfenden Code öffnen oder – mit Hilfe der Makroaktion öffnenFormular – im Autoexec-Makro, nachdem die Pfade überprüft und gegebenenfalls aktualisiert wurden. Ein solches Autoexec-Makro könnte beispielsweise wie in Abb. 2 aussehen.
Noch geschickter ist die Variante, eine Funktion zu schreiben, die (nur) nach dem erfolgreichen Wiedereinbinden der Tabellen den Wert True zurückgibt, und dies im Makro als Bedingung für das öffnen des Startformulars zu verwenden. Dadurch wird die Aktion öffnenFormular nur ausgeführt, wenn der Code erfolgreich war (siehe Bild 3).
Diese Beispiele sollen nur andeuten, wie Kombinationen von Start-Menü, VBA und Autoexec-Makro aussehen können. Es gibt dafür viele sinnvolle Varianten je nach Aufbau der Datenbank, Wichtigkeit der Absicherung gegen Anwendereingriffe und so weiter.
Befehlszeilenoptionen
Weniger bekannt als das Menü Start und das Autoexec-Makro sind die Möglichkeiten, die Access durch Befehlszeilenoptionen beim Starten bietet.
Sie können besonders hilfreich sein im Falle von Mehrfachinstallationen, die pro Arbeitsplatz oder Arbeitsgruppe individuelle Einstellungen benötigen.
Wenn Sie auf dem Windows-Desktop (oder im Windows-Explorer und so weiter) eine Verknüpfung zu einer Datenbank erstellen, bietet Ihnen Access ein gutes Dutzend Optionen, die Sie als Befehle in dieser Verknüpfung verwenden beziehungsweise mitgeben können.
Eine Liste der möglichen Optionen finden Sie in der Online-Hilfe mit dem Suchbegriff Befehlszeilenoptionen.
Um eine Befehlszeilenoption wirksam mitzugeben, müssen Sie folgendermaßen vorgehen:
Bild 4: Das Textfeld für die Verknüpfungseigenschaft Ziel ist etwas zu klein geraten.
Für unser Thema sind insbesondere die beiden Optionen /x Makro und /cmd geeignet.
Die Option /x Makro
Mit der Option /x Makro können Sie – wie im Beispiel gezeigt – angeben, dass ein bestimmtes Makro beim öffnen der Datenbank ausgeführt wird. In diesem Makro stehen Ihnen alle Möglichkeiten der Makroprogrammierung von Access zur Verfügung: Formular oder Bericht öffnen, Code ausführen und so weiter.
Bild 5: Die Befehl-Funktion im Autoexec-Makro
Mit der Option /x Makro in der Datei-Verknüpfung können Sie also für jeden Arbeitsplatz individuell einstellen, was beim Starten der Datenbank passieren soll.
Die Option /cmd
Mit der Option /cmd können Sie einen beliebigen Text wie zum Beispiel den Namen eines Formulars an die Datenbank übergeben:
"C:\Office97\Office\MSACCESS.EXE" "C:\Datenbanken\Kunden.mdb" /cmd frmStart