Access-Anwendungen brauchen Formulare für die Interaktion mit dem Benutzer. Aber wie öffnet man ein solches Formular überhaupt Klar, das funktioniert zwar mit einem Doppelklick auf den Namen des jeweiligen Formulars im Navigationsbereich. Aber diesen sollten der Benutzer im Optimalfall überhaupt nicht sehen, denn sonst könnte er auch direkt auf die Inhalte von Tabellen zugreifen – und dazu soll er eigentlich die an die Tabellen gebundenen Formulare nutzen. Wir müssen also eine alternative Möglichkeit schaffen, damit der Benutzer die Formulare öffnen kann. Diese soll möglichst flexibel sein und es auch einmal erlauben, Informationen wie einen Filter zu übergeben oder ob das zu öffnende Formular einen neuen, leeren Datensatz anzeigen soll. Das Schweizer Taschenmesser für diesen Fall ist die Methode OpenForm der DoCmd-Klasse. Damit können wir Formulare in verschiedenen Ansichten öffnen, Parameter übergeben, Filter setzen oder auch den Datenbearbeitungsmodus einstellen.
Beispieldatenbank
Die Beispiele dieses Artikels findest Du in der Datenbank FormulareBasics_FormulareOeffnenPerDoCmdOpenForm.accdb.
Formulare öffnen
Das Öffnen von Formularen ist eine essenzielle Aktion in Access-Datenbanken, in denen der Benutzer auf irgendeine Weise mit den Daten interagieren soll. Um dies zu erledigen, gibt es die folgenden Möglichkeiten:
- Doppelklick auf den Formularnamen im Navigationsbereich
- Angabe eines Formulars für die Option Formular anzeigen in den Access-Optionen
- Öffnen eines Formulars mit dem Makrobefehl ÖffnenFormular
- Öffnen eines Formulars mit der VBA-Methode DoCmd.OpenForm
Doppelklick auf den Formularnamen
Die erste Methode fällt aus den in der Einleitung genannten Gründen aus – der Benutzer sollte den Navigationsbereich normalerweise gar nicht zu Gesicht bekommen.
Startformular in den Optionen festlegen
Die zweite Methode ist gut geeignet, wenn Du ein Startformular zur Anzeige eines Splash Screens beim Öffnen anzeigen möchtest oder Du ein Formular mit den Funktionen der Datenbankanwendung anzeigen möchtest, das wiederum Schaltflächen zum Öffnen weiterer Formulare zum Bearbeiten der Daten enthält.
Vielleicht hat Deine Anwendung auch ein Formular, das so oft verwendet wird, dass Du es standardmäßig direkt beim Öffnen anzeigen möchtest. Der einzige Nachteil dieser Methode ist, dass Du hier nur den Formularnamen angeben kannst, aber nicht die Optionen, die Du im Makrobefehl ÖffnenFormular oder in der Methode DoCmd.OpenForm findest.
Wenn Du diese Optionen beim Starten nutzen möchtest, kannst Du aber auch ein Makro definieren, dass beim Start ausgelöst wird und die Aktion ÖffnenFormular nutzt. Dieses Makro muss den Namen AutoExec tragen, damit es automatisch ausgeführt wird. Oder Du rufst in diesem Makro die Aktion Ausführen Code auf und übergibst den Namen einer VBA-Funktion, die wiederum die Methode DoCmd.OpenForm ausführt und so das gewünschte Formular öffnet. Das sollen allerdings Themen weiterer Artikel sein – hier konzentrieren wir uns auf den DoCmd.OpenForm-Befehl.
Öffnen per Ribbon-Schaltfläche
Die DoCmd.OpenForm-Methode können wir beispielsweise auch nutzen, wenn wir unserer Anwendung ein Ribbon mit Schaltflächen hinzufügen. Den dadurch ausgelösten Prozeduren können wir ebenfalls die Methode DoCmd.OpenForm hinzufügen, um per Ribbon-Schaltfläche Formulare zu öffnen.
Makro oder VBA
Die Makroaktion ÖffnenFormular und der VBA-Befehl DoCmd.OpenForm bieten grundsätzlich genau die gleichen Möglichkeiten. Die Parameter der Makroaktion sehen wir in Bild 1. Um diese Ansicht zu erhalten, legen wir mit Erstellen|Makros und Code|Makro ein neues Makro an und wählen als Aktion ÖffnenFormular aus.
Bild 1: Die Makroaktion ÖffnenFormular
Hier sehen wir die Parameter, die wir in ähnlicher Form auch in der Parameterliste der VBA-Methode DoCmd.OpenForm vorfinden. Um diese einzusehen, öffnen wir den VBA-Editor und wechseln dort zum Direktbereich. Das gelingt vom Access-Hauptfenster am einfachsten mit der Tastenkombination Strg + G. Geben wir hier DoCmd.OpenForm gefolgt von einem Leerzeichen ein, erhalten wir die Parameterliste aus Bild 2. Schauen wir uns die Parameter der beiden Varianten in der Übersicht an:
Bild 2: Der VBA-Befehl DoCmd.OpenForm
- Formularname (FormName): Name des zu öffnenden Formulars
- Ansicht (View): Ansicht des Formulars beim Öffnen
- Filtername (FilterName): Name eines beim Öffnen anzuwendenden Filters
- Bedingung (WhereCondition): Angabe einer Bedingung in Form eines Kriteriums wie AutorID = 1
- Datenmodus (DataMode): Datenmodus, zum Beispiel neuer Datensatz, Datensatz bearbeiten, schreibgeschützt
- Fenstermodus (WindowMode): als modaler Dialog, ausgeblendet et cetera
Die VBA-Methode DoCmd.OpenForm liefert allerdings noch einen weiteren Parameter namens Open-Args. Damit können wir beim Öffnen eine Zeichenkette übergeben, die wir in den Ereignissen des Formulars auswerten können.
Wir schauen uns diese Parameter in den folgenden Abschnitten für den Einsatz unter VBA an. VBA ist flexibler als Makros.
Testen der verschiedenen Parameter
Zum Ausprobieren der folgenden Anweisungen nutzen wir zunächst das Direktfenster des VBA-Editors. Hier können wir die Befehle einfach eingeben und ausprobieren. IntelliSense unterstützt uns bei der Angabe der Parameter und bei einigen Parametern werden auch die zur Verfügung stehenden Werte angezeigt.
In einem Punkt liefert die Verwendung der Makrofunktion ÖffnenFormular einen Vorteil gegenüber der VBA-Variante DoCmd.OpenForm: Der Makro-Editor bietet alle zur Verfügung stehenden Formulare zur Auswahl an (siehe Bild 3).
Bild 3: Die Makroaktion ÖffnenFormular bietet die Formulare zur Auswahl an.
Einfaches Öffnen eines Formulars
Die Mindestanforderung an die Methode DoCmd.OpenForm beim Öffnen eines Formulars ist die Angabe des Formularnamens. Wenn wir beispielsweise das Formular frmLeserDetails öffnen wollen, nutzen wir die folgende Anweisung:
DoCmd.OpenForm "frmLeserDetails"
Hier geben wir nur den Namen des zu öffnenden Formulars für den ersten Parameter FormName an. Diesen können wir einfach aus dem Navigationsbereich übernehmen, wir brauchen ihn nur noch in Anführungszeichen einzufassen. Die Angabe des Formularnamens ist Pflicht – woher sollte die Anweisung sonst wissen, welches Formular geöffnet werden soll Die übrigen Parameter sind alle optional, teilweise werden Standardwerte verwendet.
Einstellen der Ansicht beim Öffnen eines Formulars
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: