Microsoft Access bietet eine praktische Funktion namens Objektnamen-Autokorrektur. Sie sorgt dafür, dass Änderungen an den Namen von Tabellen oder Tabellenfeldern automatisch auf anderen Elemente übertragen werden, welche diese Tabellen oder Felder referenzieren. In diesem Beitrag schauen wir uns an, wie die Objektnamen-Autokorrektur aktiviert wird, wie sie funktioniert und warum sie nicht in jeder Phase des Lebenszyklus einer Access-Anwendung sinnvoll ist.
Welches Problem löst die Objektnamen-Autokorrektur?
Wenn wir in Access beispielsweise ein Formular hinzufügen, dass die Daten einer Tabelle anzeigen soll, fügen wir diesem Formular die Tabelle (oder eine darauf basierende Abfrage) als Datensatzquelle hinzu und ziehen die benötigten Felder in den Formularentwurf.
Das Formular zeigt nun für jeden Datensatz die Werte der entsprechenden Felder der Datensatzquelle an.
Sollten wir nun aus irgendeinem Grund nachträglich den Namen eines der Felder der zugrunde liegenden Datenbank ändern, ohne dass die Objektnamen-Autokorrektur aktiviert ist, finden wir beim nächsten Öffnen des Formulars den Fehler aus Bild 1 vor.

Bild 1: Fehler nach dem Ändern eines Tabellenfeldnamens ohne Verwendung der Objektnamen-Autokorrektur
Wenn wir dieses Feld nicht nur in einem Formular genutzt haben, sondern in mehreren – und gegebenenfalls auch noch in Abfragen und Berichten, müssen wir Eigenschaften wie Steuerelementinhalt an allen relevanten Stellen anpassen.
Wie löst die Objektnamen-Autokorrektur dieses Problem?
Hier kommt die Objektnamen-Autokorrektur ins Spiel. Diese ist gerade bei neu angelegten Access-Datenbanken nicht umsonst standardmäßig aktiviert. Gerade wenn man beginnt, eine Anwendung zu programmieren, gibt es öfter Änderungen am Datenmodell und speziell auch an den Namen der Tabellenfelder.
Und genau diese registriert die Objektnamen-Autokorrektur. Sie prüft dann, ob es bereits Objekte gibt, deren Felder über verschiedene Eigenschaften wie beispielsweise Steuerelementinhalt auf ein geändertes Feld verweisen.
Was ist das Problem der Objektnamen-Autokorrektur?
Wenn man die ersten Suchergebnisse zum Begriff Objektnamen-Autokorrektur betrachtet, fällt zuerst einmal auf, dass hier oft von Abschalten die Rede ist und nicht von der Funktionsweise selbst. Das liegt daran, dass Performance im Kontext von Access ein wichtiger Faktor ist und die Entwickler an allen denkbaren Schrauben drehen.
Die Objektnamen-Autokorrektur scheint ständig zu beobachten, ob es irgendwelche Änderungen am Entwurf des Datenmodells gibt, und das geht zu Lasten der Performance.
Sobald die Anwendung jedoch ein Stadium erreicht hat, an dem nicht mehr viele Änderungen zu erwarten sind, kann man die Objektnamen-Autokorrektur abschalten. Das ist insbesondere der Fall, wenn die Anwendung bereits an den Benutzer ausgeliefert ist.
Vor der Auslieferung sollten wir die Objektnamen-Autokorrektur also auf jeden Fall abschalten.
Objektnamen-Autokorrektur aktivieren und deaktivieren
Wenn wir eine neue, leere Access-Datenbank erstellen und für diese die Access-Optionen öffnen, sehen wir im Bereich Aktuelle Datenbank den Abschnitt Optionen für die Objektnamen-Autokorrektur (siehe Bild 2).

Bild 2: Optionen für die Objektnamen-Autokorrektur
Hier sehen wir drei Optionen:
- Informationen zu Objektnamenautokorrektur nachverfolgen: Diese Option startet lediglich die Nachverfolgung der Änderungen, die in einer zugleich erstellten Tabelle namens MSysNameMap gespeichert werden. Die Änderungen selbst werden für jedes Objekt der Datenbank gespeichert und liegen in einem Feld namens NameMap, das binäre Daten enthält (siehe Bild 3).
- Objektnamenautokorrektur ausführen: Erst wenn diese Option aktiviert ist, werden die vom Benutzer durchgeführten Änderungen tatsächlich auch auf andere Objekte übertragen.
- Änderungen für Objektnamenautokorrektur protokollieren: Diese Option sorgt dafür, dass die Änderungen auch in einem für Menschen lesbaren Format in einer Tabelle namens Objektnamen-Autokorrekturprotokoll gespeichert werden. Mehr dazu weiter unten.

Bild 3: Die Tabelle MSysNameMap
Welche Änderungen berücksichtigt die Objektnamen-Autokorrektur?
Die Objektnamen-Autokorrektur ist sehr hilfreich, weil sie bereits einige Bereiche abdeckt – aber auch nicht alle. Hier die Auflistung von Beispielen, wo die Objektnamen-Autokorrektur eingreift (es gibt noch weitere Beispiele, hier nur die wichtigsten).
Wenn wir Tabellennamen ändern, werden diese Änderungen wie folgt übernommen:
- in Abfragen
- in Formularen und Berichten in der Eigenschaft Datensatzquelle, und zwar sowohl bei Angabe reiner Tabellen als auch bei Verwendung von SELECT-Abfragen, welche diese Tabelle enthalten – dies gilt auch für Unterabfragen und Unterberichte
Wenn wir Feldnamen in Tabellen ändern, werden die Änderungen übertragen in:
- Abfragen, welche die Felder der entsprechenden Tabelle nutzen
- Formulare und Berichte, welche die Tabelle nutzen und Steuerelemente enthalten, die über die Eigenschaft Steuerelementinhalt auf ein solches Feld verweisen
- Eigenschaften von Tabellenfeldern, die durch Nachschlagefelder entstanden sind. Hier wird zum Beispiel die Datensatzherkunft beim Ändern der zugrunde liegenden Tabelle eines Nachschlagefeldes angepasst.
Wenn wir Abfragen ändern, passt Access die gleichen Objekte an wie bei Tabellen.
Wenn wir die Namen von Formularen oder Berichten ändern, werden diese Änderungen zum Beispiel wie folgt übernommen:
- wenn das Formular oder der Bericht als Unterformular oder Unterbericht verwendet wird,
- wenn Steuerelemente des Formulars beispielsweise über Forms!frmKriterium!txtKriterium als Vergleichswert in einer Abfrage verwendet werden oder
- wenn ein Steuerelement den Inhalt eines anderen Steuerelements im gleichen oder in einem anderen Formular als Steuerelementinhalt anzeigt.
Wo funktioniert die Objektnamen-Autokorrektur nicht?
Die wichtigste Stelle, an der die Objektnamen-Autokorrektur nicht funktioniert, ist der VBA-Code der Access-Anwendung.
Wenn wir hier Tabellen und Felder oder Formulare und Berichte samt Steuerelementen referenzieren und die Bezeichnungen über den Entwurf ändern, werden die Anpassungen nicht in den VBA-Code übernommen.
Hier kann man, kurzgefasst, am einfachsten den vollständigen VBA-Code nach Vorkommen des geänderten Objekt-, Feld- oder Steuerelementnamen durchsuchen und die benötigten Veränderungen durchführen.
Man kann sich die Arbeit zumindest an einer Stelle vereinfachen. Wenn man innerhalb des Klassenmoduls eines Formulars oder Berichts über das Schlüsselwort Me auf ein Steuerelement zugreift, das sich im gleichen Formular oder Bericht befindet, kann man die Punkt-Syntax statt der Ausrufezeichen-Syntax verwenden.
Die für Steuerelemente angegebenen Namen werden in der Klasse des Formulars hinterlegt. Wenn wir den Namen eines Steuerelements ändern, ändert sich auch der Name des Elements in der Klasse.
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
