Benutzerdefinierter Navigationsbereich im Griff

Den Navigationsbereich von Access kennt jeder Access-Entwickler. Damit öffnen und verwalten wir die Access-Objekte beim Entwickeln einer Datenbankanwendung. Aber der Navigationsbereich bietet noch mehr Möglichkeiten, als einfach nur die Tabellen, Abfragen, Formulare, Berichte, Makros und Module sortiert nach Kategorien anzuzeigen und eine einfache Suchfunktion dafür bereitzustellen. Wir können damit auch noch benutzerdefinierte Kategorien und Gruppen erstellen, in denen wir die Objekte individuell strukturieren können. Während die Verwendung dieser Funktionen eher trivial ist, weshalb wir nur einen kurzen Blick darauf werfen, interessiert uns aus Entwicklersicht, wo diese Kategorien und Gruppen sowie die enthaltenen Elemente gespeichert werden. In diesem Beitrag werden die notwendigen Schritte beschrieben, um diese Einstellungen und Elemente bei der Übertragung der Anwendung in eine neue Datenbankdatei zu berücksichtigen.

Benutzerdefinierte Anpassungen im Navigationsbereich

Wenn wir den Navigationsbereich nutzen wollen, um die Datenbankobjekte anders zu strukturieren, können wir die von Access bereitgestellten Methoden dazu nutzen.

Dazu klicken wir mit der rechten Maustaste auf die Titelleiste des Navigationsbereichs und wählen aus dem Kontextmenü den Befehl Navigationsoptionen… aus.

Dies öffnet den Dialog aus Bild 1.

Einstellungen für den benutzerdefinierten Navigationsbereich

Bild 1: Einstellungen für den benutzerdefinierten Navigationsbereich

Hier sehen wir zwei Listenfelder, von denen das linke die Kategorien anzeigt und das rechte die in der aktuell ausgewählten Kategorie enthaltenen Gruppen.

Die Standardkategorie heißt Objekttyp und sie zeigt die Access-Objekte gruppiert nach dem Objekttyp an, also nach Tabellen, Abfragen, Formularen, Berichten, Makros und Modulen. Die zweite eingebaute Kategorie heißt Tabellen und damit verbundene Sichten. Sie sorgt dafür, dass die Tabellen als Gruppenköpfe angezeigt werden und darunter alle Objekte, die in irgendeiner Weise auf die jeweilige Tabelle zugreifen. Dies sieht im Navigationsbereich wie in Bild 2 aus. Um zu dieser Kategorie zu wechseln, klicken wir auf die Titelleiste des Navigationsbereichs und wählen den Eintrag Tabellen und damit verbundene Sichten aus.

Kategorisierung nach Tabellen und ihren abhängigen Objekten

Bild 2: Kategorisierung nach Tabellen und ihren abhängigen Objekten

Uns interessiert jedoch viel mehr die dritte Kategorie namens Custom, die standardmäßig in jeder neuen Access-Datenbank angelegt wird und die wir auch oben in der Abbildung bereits gesehen haben. Für diese Kategorie sehen wir auf der rechten Seite zwei Gruppen namens Custom Group 1 und Nicht zugewiesene Objekte.

Diese aktivieren wir ebenfalls durch einen Klick auf die Titelleiste des Navigationsbereichs und anschließende Auswahl von Custom.

Danach erhalten wir die Ansicht aus Bild 3 im Navigationsbereich. Hier sehen wir keine Elemente in der Gruppe Custom Group 1 und alle Elemente in der Gruppe Nicht zugewiesene Objekte.

Auswahl der benutzerdefinierten Kategorie

Bild 3: Auswahl der benutzerdefinierten Kategorie

Anpassen von Kategorien und Gruppen

Im Dialog Navigationsoptionen können wir nun zum Erstellen einer eigenen Kategorie entweder die vorhandene Kategorie Custom umbenennen oder diese löschen und neu erstellen. Dazu verwenden wir die Schaltflächen unterhalb des linken Listenfeldes. Wir benennen die Kategorie in diesem Fall in Objekte nach Bereich um, weil wir verschiedene Gruppen anlegen wollen, in denen wir die Datenbankobjekte nach verschiedenen Kriterien gruppieren wollen.

Gruppe ausblenden

In der rechten Liste sehen wir nach wie vor die beiden Gruppen Custom Group 1 und Nicht zugewiesene Objekte. Erstere können wir löschen oder umbenennen, die Gruppe Nicht zugewiesene Objekte muss jedoch erhalten bleiben. Wenn wir diese Gruppe später nicht mehr sehen wollen, können wir diese allerdings auch ausblenden. Dazu klicken wir mit der rechten Maustaste auf den Gruppenkopf und wählen den Kontextmenübefehl Ausblenden aus (siehe Bild 4).

Ausblenden einer Gruppe

Bild 4: Ausblenden einer Gruppe

Ausgeblendete Gruppe wieder einblenden

Nun sehen wir die ausgeblendete Gruppe nicht mehr, was problematisch wird, wenn wie einmal ein neues Datenbankobjekt hinzufügen und dieses einer der Gruppen zuordnen wollen. Also müssen wir die Gruppe Nicht zugewiesene Objekte dazu kurzzeitig wieder einblenden.

Dazu öffnen wir die Navigationsoptionen wie oben beschrieben und aktivieren die Option Ausgeblendete Objekte anzeigen (siehe Bild 5).

Einblenden ausgeblendeter Elemente

Bild 5: Einblenden ausgeblendeter Elemente

Danach sehen wir die aktuell ausgeblendeten Gruppen und Elemente ausgegraut wieder im Navigationsbereich. Wir können die gewünschten Elemente nun aus diesem Bereich in die entsprechende Gruppe verschieben und den Bereich wieder ausblenden.

Objekte zu den Gruppen zuweisen

Hier stellt sich noch die Frage, wie wir überhaupt Datenbankobjekte zu einer der Gruppen zuordnen wollen. Im Dialog Navigationsoptionen ist dies jedenfalls nicht möglich. Die Lösung ist aber einfach: Wir legen zunächst wie in Bild 6 die benötigten Gruppen für unsere benutzerdefinierte Kategorie an.

Einige benutzerdefinierte Gruppen

Bild 6: Einige benutzerdefinierte Gruppen

Schließen wir den Dialog Navigationsoptionen dann wieder und wählen im Navigationsbereich die benutzerdefinierte Kategorie namens Objekte nach Bereich aus, sehen wir die Ansicht aus Bild 7. Hier können wir nun die benötigten Objekte in die einzelnen Kategorien hineinziehen.

Zuweisen von Datenbankobjekten zu den benutzerdefinierten Gruppen

Bild 7: Zuweisen von Datenbankobjekten zu den benutzerdefinierten Gruppen

Das Ergebnis sehen wir schließlich in Bild 8. Hier haben wir zunächst einmal einfach alle Elemente nach dem Namen der jeweiligen Gruppe gefiltert und dann alle Objekte, die zu der Gruppe passen, in diese hineingezogen. Das haben wir für alle Gruppen wiederholt.

Die benutzerdefinierten Gruppen mit den zugewiesenen Datenbankobjekten

Bild 8: Die benutzerdefinierten Gruppen mit den zugewiesenen Datenbankobjekten

Bei manchen Objekten tauchen im Name aber gleich mehrere Gruppenbezeichnungen auf. Auch das ist kein Problem, denn innerhalb der benutzerdefinierten Gruppen werden, wie die Icons bereits zeigen, ohnehin nur Verknüpfungen zu den jeweiligen Datenbankobjekten gespeichert.

Das heißt, dass wir beispielsweise die Verknüpfung auf die Tabelle tblAutorenBuecher nicht nur in der Kategorie Autoren unterbringen, sondern auch in der Kategorie Bücher.

Damit haben wir uns eine übersichtlichere Darstellung der zu programmierenden Objekte erschaffen. Nun wollen wir uns darum kümmern, wo sich die Informationen zu diesen Kategorien, Gruppen und den zugewiesenen Elementen befinden und wie wir diese auslesen, manipulieren und gegebenenfalls mit den ganzen Objekten in eine andere Datenbank übertragen können. Letzteres kann beispielsweise einmal nötig sein, wenn die Datenbank korrupt ist.

Informationen zum Navigationsbereich in den Systemtabellen

Bei den Daten rund um die Kategorien, Gruppen und die zugeordneten Datenbankobjekte handelt es sich um strukturierte Informationen, die in Access üblicherweise in Tabellen gespeichert werden. Nur sehen wir aktuelle keine Tabelle, die dafür in Frage kommt.

Das ändert sich allerdings, wenn wir die Navigationsoptionen erneut öffnen und die Optionen Ausgeblendete Objekte anzeigen und Systemobjekte anzeigen beide aktivieren.

Im Navigationsbereich erscheinen nun automatisch die Systemtabellen und die ausgeblendeten Tabellen – teilweise sind die Systemtabellen auch noch als ausgeblendet markiert, sodass das Aktivieren beider Optionen zum Einblenden durchaus angebracht war (siehe Bild 9).

Die Tabellen zum Verwalten der Daten zum Navigationsbereich

Bild 9: Die Tabellen zum Verwalten der Daten zum Navigationsbereich

Hier sehen wir auch vier Tabellen, deren Namen zu unserer Suche passen:

  • MSysNavPaneGroupCategories
  • MSysNavPaneGroups
  • MSysNavPaneGroupToObjects
  • MSysNavPaneObjectIDs

Tabelle zum Speichern der Objekte

In der Tabelle MSysNavPaneObjectIDs werden die Namen aller Objekte der Datenbank gespeichert – samt einem Zahlenwert für den Objekttyp, wie er auch in der Tabelle MSysObjects zu finden ist, und einem eindeutigen Wert im Feld Id (siehe Bild 10).

Die Tabelle der NavPane...-Objekte

Bild 10: Die Tabelle der NavPane…-Objekte

Auf der anderen Seite der Kette sehen wir die Tabelle der Kategorien, wie wir sie im linken Listenfeld der Navigationsoptionen anlegen können.

Diese werden in der Tabelle MSysNavPaneGroupCategories gespeichert.

Diese sehen wir in Bild 11. Genau wie in der Liste im Navigationsbereich sehen wir hier genau drei Einträge, von denen der dritte mit dem Wert 3 im Primärschüsselfeld den Namen Objekte nach Bereich trägt.

Die Tabellen zum Verwalten der Kategorien

Bild 11: Die Tabellen zum Verwalten der Kategorien

Um die übrigen beiden Tabellen hier einzuordnen, haben wir uns die Tabellen im Beziehungen-Fenster angesehen.

Manchmal kann man sich die Zusammenhänge zwischen den Tabellen besser zusammenreimen, wenn man diese inklusive ihrer Felder einmal im Überblick sieht.

Wenn wir die vier Tabellen in das Beziehungen-Fenster ziehen, sehen wir auch gleich, dass es nur zwischen zweien eine Beziehung mit referenzieller Integrität gibt – nämlich MSysNavPaneGroupCategories und MSysNavPaneGroups, also die Tabellen mit den Kategorien und den Gruppen.

Die Beziehungen zwischen den übrigen Tabellen fügen wir der Übersicht halber einmal hinzu. Die Tabelle MSysNavPaneObjectIDs mit den Datenbankobjekten ist über die Tabelle MSysNavPaneGroupToObjects als m:n-Verknüpfungstabelle mit der Tabelle MSysNavPaneGroups verknüpft. Das ist nötig, damit wir jedes Objekt jeder Gruppe zuordnen können. Das Ergebnis der Verknüpfungen sehen wir in Bild 12.

Die Tabellen im Beziehungen-Fenster

Bild 12: Die Tabellen im Beziehungen-Fenster

Tabelle zum Speichern der Gruppen

Dementsprechend sehen wir in der Tabelle MSysNavPaneGroups die verschiedenen Gruppen, die wir bereits angelegt haben (siehe Bild 13).

Die Tabelle MSysNavPaneGroups mit den Gruppen

Bild 13: Die Tabelle MSysNavPaneGroups mit den Gruppen

Wir sehen hier aber auch für jede Tabelle einen Eintrag. Wozu das? Nun: Es gibt, wie oben bereits erwähnt, eine Kategorie namens Tabellen und damit verbundene Sichten. In dieser werden alle Tabellen als Gruppen aufgeführt und die Datenbankobjekte zugewiesen, die mit diesen Tabellen in Beziehung stehen.

Tabelle zum Zuordnen von Datenbankobjekten zu den Gruppen

Fehlt noch die Tabelle MSysNavPaneGroupToObjects, die beispielsweise mit Datensätzen wie in Bild 14 gefüllt ist.

Die Tabelle MSysNavPaneGroupToObjects mit den Gruppen

Bild 14: Die Tabelle MSysNavPaneGroupToObjects mit den Gruppen

Wichtig sind hier erst einmal die beiden Felder GroupID und ObjectID. Das Feld GroupID referenziert einen Datensatz aus der Tabelle MSysNavPaneGroups. Das Feld ObjectID weist diesem einen Datensatz der Tabelle MSysNavPaneObjects zu.

Außerdem wird im Feld Position scheinbar festgehalten, in welcher Reihenfolge die Elemente innerhalb der Gruppe angezeigt werden sollen. Wenn wir diese Werte ändern, sehen wir jedoch keine Änderung der Reihenfolge im Navigationsbereich.

Interessant ist noch das Feld Icon. Hier sehen wir bisher nur, dass wir in den beiden Kategorien Objekttyp und Tabellen und damit verbundene Sichten immer die Standard-Icons der Objekte sehen. In den benutzerdefinierten Kategorien werden die Objekte mit den gleichen Icons angezeigt, die jedoch immer noch um den Verknüpfungspfeil ergänzt sind.

Sollte hier etwa die Möglichkeit bestehen, noch weitere Icons zu nutzen? Da wir bereits verschiedene Icons im Navigationsbereich sehen, das Feld Icon aber für jeden Datensatz den Wert 0 enthält, gehen wir an dieser Stelle nicht davon aus, dass wir hier ein alternatives Icon nutzen können. Wir haben verschiedene Zahlenwerte ausprobiert, aber wir konnten keine weiteren Icons außer den standardmäßig dargestellten hinzufügen.

Importieren der Navigationsbereichs-Einstellungen in eine neue Datenbank

Wenn wir eine neue Datenbank auf Basis einer vorhandenen Datenbank erstellen wollen, beispielsweise weil die vorhandene Datenbank korrupt oder beschädigt ist, können wir dazu wie üblich den Assistenten zum Importieren von Daten aus einer anderen Access-Datenbank verwenden.

Diesen starten wir beispielsweise in der Access-Version von Office 365 mit dem Ribbon-Befehl Externe Daten|Importieren und Verknüpfen|Neue Datenquelle|Aus Datenbank|Access. Dies öffnet zunächst einen Dialog, mit dem wir die Quelldatenbank auswählen können. Danach legen wir im Dialog Objekte importieren fest, welche Datenbankobjekte importiert werden sollen. Klicken wir hier auf Optionen, finden wir im Bereich Importieren die Option Navigationsbereichsgruppen vor. Aktivieren wir diese, werden die Inhalte der oben beschriebenen Tabellen in die neue Datenbank übernommen (siehe Bild 15).

Aktivieren der Navigationsbereichsgruppen beim Importieren von Datenbankobjekten

Bild 15: Aktivieren der Navigationsbereichsgruppen beim Importieren von Datenbankobjekten

Nach dem Importieren finden wir nach einem Klick auf die Titelleiste des Navigationsbereichs direkt die benutzerdefinierten Kategorien vor.

VBA-Methoden für die Steuerung des Navigationsbereichs

Wenn wir im Objektkatalog des VBA-Editors NavigationPane als Suchbegriff eingeben, finden wir ein paar Einträge (siehe Bild 16).

Methoden rund um den Navigationsbereich

Ende des frei verfügbaren Teil. Wenn Du mehr lesen möchtest, hole Dir ...

den kompletten Artikel im PDF-Format mit Beispieldatenbank

diesen und alle anderen Artikel mit dem Jahresabo

Schreibe einen Kommentar