Access-FAQ: Starten von Access

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
  • Makro Autoexec
  • Befehlszeilenoptionen
  • 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:

  • Erstellen Sie eine Verknüpfung zu Ihrer Datenbank, also zur .mdb-Datei.
  • Klicken Sie mit der rechten Maustaste auf die Verknüpfung und wählen Sie den Menüpunkt Eigenschaften. Die Eigenschaft Ziel enthält standardmäßig nur den Pfad zur .mdb-Datei, zum Beispiel c:\Datenbanken\Kunden.mdb.
  • Ergänzen Sie diese Eigenschaft um den Pfad zur passenden Version von Access. Ohne diese Angabe werden die Startoptionen nicht abgearbeitet, also schlicht ignoriert. Falls auf dem Computer mehrere Versionen von Access installiert sind, stellen Sie mit der Pfadangabe zu msaccess.exe nebenbei auch sicher, dass die Datenbank mit der richtigen Version geöffnet wird. Der Eintrag lautet nach dieser änderung zum Beispiel “C:\Office97\Office\MSACCESS.EXE” “C:\Datenbanken\Kunden.mdb”.Die Anführungszeichen vor und nach den Pfadangaben sind bewusst gesetzt und verhindern Probleme mit eventuellen Leerzeichen in den Pfaden.
  • Ergänzen Sie die Ziel-Eigenschaft um die gewünschte Option, zum Beispiel “C:\Office97\Office\MSACCESS.EXE” “C:\Datenbanken\Kunden.mdb” /x StartMakro. In diesem Beispiel würde beim Start der Datenbank Kunden.mdb ein Makro namens StartMakro ausgeführt (siehe Bild 4). (
  • 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

    Schreibe einen Kommentar