Home > Artikel > Ausgabe 3/2017 > Access-Objekt-Assistenten programmieren, Teil I

Access-Objekt-Assistenten programmieren, Teil I

Achtung: Sie sind nicht angemeldet. Wenn Sie Abonnent sind und sich anmelden, lesen Sie den kompletten Artikel, laden das PDF herunter oder probieren die Beispieldatenbank aus (sofern vorhanden).

Während ein Add-In, wie wir es im Artikel »Access-Add-Ins programmieren« demonstriert haben, auch so genannt und im entsprechenden Ribbon-Menü verfügbar ist, nennen sich die übrigen Add-Ins »Assistenten«. Schauen wir uns also nun an, wie die Assistenten sich von den Add-Ins unterscheiden und wie Sie diese programmieren. Den Start machen wir dabei mit den Objekt-Assistenten, also solchen Assistenten, die Sie für die verschiedenen Objekttypen wie Tabellen, Abfragen, Formulare und Berichte über das Ribbon-Tab »Erstellen« aufrufen können.

Beispieldatenbank

Die Beispiele dieses Artikels finden Sie in der Datenbank Abfrageassistent.accdb.

Tabellen-Assistenten

Tabellen-Assistenten, wie es sie in früheren Access-Versionen einmal gab, finden Sie in den neuen Access-Versionen nicht mehr. Es gibt schlicht keinen Eintrag namens Tabellen-Assistent mehr im Ribbon unter Erstellen|Tabellen (für Abfragen, Formulare und Berichte gibt es diese noch). Aber können wir überhaupt noch eigene Tabellen-Assistenten anlegen, wenn wir gar keinen Eintrag namens Tabellen-Assistenten mehr in Access haben? Dazu schauen wir uns zunächst die Vorgehensweise für einen Abfrage-Assistenten an, denn dort wissen wir, dass wir den Assistenten auch an der gewünschten Stelle vorfinden.

Abfrage-Assistenten

Die Abfrage-Assistenten von Access öffnen Sie, indem Sie auf den Eintrag Erstellen|Abfragen|Abfrage-Assistent im Ribbon klicken (siehe Bild 1).

Aufruf eines Abfrage-Assistenten

Bild 1: Aufruf eines Abfrage-Assistenten

Es erscheint dann der Dialog aus Bild 2, der die vier in Access eingebauten Assistenten zum Erstellen von Abfragen für verschiedene Anforderungen anbietet. Diesem wollen wir nun einen eigenen Eintrag hinzufügen.

Der Dialog mit den verschiedenen Abfrage-Assistenten

Bild 2: Der Dialog mit den verschiedenen Abfrage-Assistenten

Die Tabelle USysRegInfo

Diese Tabelle haben Sie bereits im Artikel Access-Add-Ins programmieren kennengelernt und Sie wissen, dass wir dort die Informationen speichern, die beim Installieren des Assistenten in die Registry eingetragen werden. Diese liest Access beim Start und stellt die dort registrierten Assistenten an den entsprechenden Stellen zur Verfügung – so wie etwa im oben vorgestellten Dialog Neue Abfrage.

Im Gegensatz zu einfachen Menü-Add-Ins gibt es bei den Objekt-Assistenten, also den Assistenten für die Erstellung von Tabellen, Abfragen, Formularen und Berichten eine Reihe weiterer Einstellungen, die in die Registry geschrieben werden müssen. Diese schauen wir uns nun im Überblick an:

  • Bitmap: Legt eine Bilddatei fest, die in dem Dialog zur Auswahl des Assistenten angezeigt werden soll, wenn der Benutzer den Assistenten markiert hat – siehe auch weiter oben im Bild des Dialogs Neue Abfrage (Zeichenfolge).
  • BitmapID: Angabe einer ID, über die Sie die in der Datei MSAccess.exe enthaltenen Icons referenzieren und als Icon des Assistenten verwenden können (Zahlenwert).
  • Datasource Required: Gibt an, ob für diesen Assistenten die Auswahl einer Datenquelle, also einer Tabelle oder Abfrage, erforderlich ist. In diesem Fall stellen Sie diese Einstellung auf den Wert 1 ein, anderenfalls auf den Wert 0 (Zahlenwert).
  • Description: Wie bei den Add-Ins die Beschreibung des Add-Ins (Zeichenfolge).
  • Function: Die beim Aufrufen des Assistenten aufzurufende VBA-Funktion (Zeichenfolge).
  • Index: Einstellung für die Position des Assistenten in der Liste der verfügbaren Assistenten (Zahlenwert).
  • Library: Pfad zu der Access-Datei, welche die aufzurufende Funktion enthält. In der Tabelle USysRegInfo können Sie den Ausdruck |ACCDIR als Platzhalter für den Add-In-Ordner auf dem jeweiligen System angeben.

Die Tabelle USysRegInfo

Die zuvor genannten Informationen tragen wir wie in Bild 3 in eine Tabelle namens USysRegInfo ein. Der Aufbau dieser Tabelle wurde bereits im Artikel Access-Add-Ins programmieren erläutert. Es gibt ein paar zusätzliche Informationen, die Sie für einen Wizard/Assistenten angeben können, aber zumindest die Angabe des Subkey ist identisch: Hier geben Sie den Platzhalter HKEY_CURRENT_ACCESS_PROFILE/... für den zu erstellenden Registry-Key an. In meiner Installation hat Access daraus einen recht wilden Registry-Pfad erzeugt:

Die Tabelle USysRegInfo für unseren Abfrage-Add-In-Dummy

Bild 3: Die Tabelle USysRegInfo für unseren Abfrage-Add-In-Dummy

HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Office\ClickToRun\REGISTRY\MACHINE\Software\Wow6432Node\Microsoft\Office␀.0\Access\Wizards\Query Wizards\AbfrageAssistent

Den Wert 327 für die Eigenschaft BitmapID finden Sie übrigens nicht ohne Weiteres heraus, da es sich um die interne Nummer einer in der Datei MSAccess.exe gespeicherte Bilddatei handelt. Diese ermitteln Sie beispielsweise mit dem Tool ResourceHacker, indem Sie die Datei MSAccess.exe laden und die Einträge unter dem Element Bitmap durchlaufen (siehe Bild 4).

Ermitteln der BitmapID für die eingebauten Bilder

Bild 4: Ermitteln der BitmapID für die eingebauten Bilder

Der tatsächlich durch diese USysRegInfo-Tabelle bei der Installation des Add-Ins über den Add-In-Manager (Ribbon-Befehl Datenbanktools|Add-Ins|Add-Ins|Add-In-Manager) vorgenommene Registry-Eintrag sieht wie in Bild 5 aus.

Registry-Eintrag für das Abfrage-Add-In

Bild 5: Registry-Eintrag für das Abfrage-Add-In

Nachdem Sie diesen Dummy installiert haben, können Sie den Ribbon-Eintrag Erstellen|Abfragen|Abfrage-Assistent aufrufen. Hier scheint nun der Dialog aus Bild 6 – mit unserem Eintrag! Ein Klick auf diesen verläuft allerdings recht unspektakulär, denn es erscheint natürlich nur das von uns programmierte Meldungsfenster.

Unser Dummy-Addin in der Liste der Abfrage-Assistenten

Bild 6: Unser Dummy-Addin in der Liste der Abfrage-Assistenten

Sie haben das Ende des frei verfügbaren Teil dieses Artikels erreicht!

Wenn Sie mehr lesen und auf viele weitere Artikel zugreifen möchten, melden Sie sich als Abonnent unter Login an. Falls nicht, bestellen Sie doch einfach ein Jahresabonnement!