Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.
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
Der übergebene Text frmStart hat zunächst keinerlei direkte Auswirkung. Mit Hilfe der Command-Funktion von VBA (mit der “deutschen” Access-Oberfläche: Befehl()) kann der übergebene Text jedoch an beliebiger Stelle in der Datenbank aufgerufen und weiterverwendet werden. Wenn Sie also in unserem Beispiel mit einem Autoexec-Makro arbeiten, so können Sie als Makrobefehl öffnenFormular verwenden und statt direkt einen Formularnamen anzugeben, den übergebenen Text mit folgender Syntax aufrufen (siehe Bild 5):
Sub procStartFrm(strNewFrm As String) On Error GoTo Error_procStartFrm Dim db As DAO.Database Dim prp As DAO.Property Set db = OpenDatabase("c:\Datenbanken\Kunden.mdb") '' neues Startformular einstellen db.Properties("StartUpForm") = strNewFrm Exit_procStartFrm: db.Close: Set db = Nothing Set prp = Nothing Exit Sub Error_procStartFrm: '' Property erstellen, falls noch kein Startformular '' gesetzt ist If Err = 3270 Then Set prp = db.CreateProperty("StartUpForm", _ dbText, strNewFrm) db.Properties.Append prp Resume Next '' bei anderem Fehler Meldung und kontrollierter " Ausstieg Else MsgBox "Fehler Nr. " & Str(Err.Number) & " " _ & Err.Description Resume Exit_procStartFrm End If End Sub
Quellcode 1
=Befehl()
Der Ausdruck =Befehl() gibt den Text frmStart zurück, den wir als Text bei der Befehlszeilenoption /cmd angegeben haben, und das Formular frmStart wird geöffnet.
Genau das Gleiche erreicht man mit folgender Code-Zeile in VBA:
DoCmd.OpenForm Command
Die Kombination aus Befehlszeilenoption und Command-Befehl ermöglicht also praktisch das übergeben einer String-Variablen von außen, die an beliebiger Stelle in der Datenbank weiterverwendet werden kann.
Durch die Verknüpfung kann man für jeden Arbeitsplatz individuelle Einstellungen treffen und für die unterschiedlichen Anwender oder Anwendergruppen verschiedene Startformulare, Eigenschafts-Einstellungen, Meldungen und so weiter festlegen.
Startoptionen lassen sich auch per VBA einstellen. Das hilft zum Beispiel, wenn man während des Entwickelns oder bei einem Update beim Kunden eine Startoption ändern möchte. Das geht auch von außen, also von einer anderen Datenbank aus. Quellcode 1 enthält ein Codebeispiel, um das Startformular in der Datenbank Kunden.mdb zu ändern oder ein neues festzulegen, falls bisher noch keines eingestellt war.
Diese Sub-Prozedur kann man in ein Standardmodul einer Datenbank legen und sie dann folgendermaßen aufrufen, um beispielsweise frmArtikel als neues Startformular zu setzen:
Sub procShiftOn(blnFlag As Boolean) On Error GoTo Error_procShiftOn Dim db As DAO.Database Dim prp As DAO.Property Set db = CurrentDb '' Property je nach Parameter setzen db.Properties!AllowBypassKey = blnFlag ''Speicherplatz der Variablen freigeben und Ausstieg Exit_procShiftOn: ''Variablen freigeben und Sub verlassen Set prp = Nothing Exit Sub Error_procShiftOn: ''Property anlegen, falls noch nicht vorhanden If Err = 3270 Then Set prp = db.CreateProperty("AllowBypassKey", _ dbBoolean, blnFlag) db.Properties.Append prp Resume Next ''bei anderem Fehler Meldung und kontr. Ausstieg Else MsgBox "Fehler Nr. " & Str(Err.Number) & " " _ & Err.Description Resume Exit_procShiftOn End If End Sub
Quellcode 2
procStartFrm "frmArtikel"
Weitere Codebeispiele gibt es gut versteckt in der Online-Hilfe. Sowohl in Access 97 als auch in Access 2000 oder 2002 finden Sie diese am sichersten, indem Sie im VBA-Editor oder im Direktfenster einen Eigenschaftennamen wie StartUpForm eingeben, <F1> drücken und im aufgerufenen Hilfetext den Beispiel-Link anklicken.
In den folgenden Abschnitten erfahren Sie, welche Funktion die Umschalttaste beim Starten von Access hat.
Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...
Testzugang
eine Woche kostenlosen Zugriff auf diesen und mehr als 1.000 weitere Artikel
diesen und alle anderen Artikel mit dem Jahresabo