Objekt- und Feldnamen refaktorieren

Lies diesen Artikel und viele weitere mit einem kostenlosen, einwöchigen Testzugang.

Es kommt vor, dass man als Access-Entwickler mit der Weiterbearbeitung von Datenbanken betraut wird. Oft geschieht es dann, dass Objekt- und Feldnamen nicht den gängigen Konventionen entsprechen. Tabellennamen kommen ohne Präfix, Objekt- und Feldnamen enthalten Umlaute, Leerzeichen et cetera. Um dadurch entstehende Probleme zu vermeiden, können wir die Benennungen anpassen. Wie dies gelingt, zeigt der vorliegende Beitrag.

Die Tabelle und die Feldnamen des Beispiels aus Bild 1 hat jeder schon einmal gesehen. Die Tabelle wurde ohne Präfix benannt, hier würden wir uns ein führendes tbl wünschen. Das Primärschlüsselfeld hätten wir lieber ohne Unterstrich (wobei das Geschmackssache ist). Definitiv sollten wir aber Straße in Strasse ändern und im Feld Telefon geschäftlich wollen wir nicht nur den Umlaut durch die entsprechenden Vokale ersetzen und das Leerzeichen weglassen. Außerdem verwenden wir in der Regel Camel Case und schreiben das zweite und die folgenden Worte groß, hier also TelefonGeschaeftlich.

Tabellenname und Feldnamen sollten refaktoriert werden.

Bild 1: Tabellenname und Feldnamen sollten refaktoriert werden.

Das Ergebnis soll in unserem Fall also wie in Bild 2 aussehen.

Tabelle mit Präfix im Namen und mit angepassten Feldnamen

Bild 2: Tabelle mit Präfix im Namen und mit angepassten Feldnamen

Notwendige änderungen finden

In unserem Beispiel ist es leicht, die zu ändernden Elemente zu finden. Bei einer Tabelle mit wenigen Feldern erledigt man den Job auch am einfachsten von Hand. Das bezieht sich allerdings nur auf die reine änderung der Objekt- und Feldbezeichnungen – es gibt ja auch Referenzen auf diese Bezeichnungen in anderen Tabellen, Abfragen, Formularen, Berichten, Makros und auch im VBA-Code. Und wenn Sie aber eine große Datenbankanwendung mit vielen Tabellen anpassen wollen, haben Sie noch mehr zu tun. Es ist also eine Frage der Datenbankgröße, wann Sie es aufgeben, die änderungen manuell zu erledigen und der Wunsch auftaucht, die änderungen automatisch auszuführen. Wie das gelingt, soll der vorliegende Beitrag zeigen. Vorher schauen wir uns aber noch an, welche änderungen im Detail anfallen und wo diese sich überall auswirken.

Referenzen auf Objektnamen und Feldnamen

Die Namen von Tabellen und Feldnamen können bereits in anderen Tabellen auftauchen – nämlich dort, wo Sie Nachschlagefelder eingerichtet haben. Wenn wir unserer Anwendung also eine Tabelle namens Anreden m/w mit den Feldern Anrede-ID und Anrede finden, kann es sein, dass ein Fremdschlüsselfeld namens Anrede-ID in der Kunden-Tabelle vorliegt, welches die Anreden-Tabelle referenziert – das sieht dann im Entwurf wie in Bild 3 aus. Wenn wir nun auch die Bezeichnungen der verknüpften Tabelle ändern, dann müssen wir darauf achten, dass auch die Verweise angepasst werden. Zum Glück unterstützt uns Access hier – wie, schauen wir uns weiter unten an.

Verweis auf andere Tabelle im Tabellenentwurf

Bild 3: Verweis auf andere Tabelle im Tabellenentwurf

Aber auch in Abfragen, Formularen und Berichten sowie in Makros finden wir unter Umständen Verweise auf die Namen von Objekten und Feldern. Ob diese automatisch angepasst werden, schauen wir uns ebenfalls an.

Auf keinen Fall erfolgt eine automatische Anpassung im VBA-Code. Hier müssen wir selbst Hand anlegen. Damit wir hier keine änderung auslassen, werden wir später ein wenig Code produzieren, der diese Aufgabe für uns übernimmt.

Die Objektnamen-Autokorrektur

Access hat schon viele Versionen eine Funktion namens Objektnamen-Autokorrektur. Diese sorgt dafür, dass änderungen von Objekt- und Feldnamen direkt an Stellen übernommen werden, welche die betroffenen Objekte und Felder referenzieren.

Die Einstellungen für die Objektnamen-Autokorrektur nehmen Sie in den Access-Optionen vor. Dort finden Sie diese unter Aktuelle Datenbank im Bereich Optionen für die Objektnamen-Autokorrektur (siehe Bild 4). Wir aktivieren hier zusätzlich noch die Option änderungen für Objektnamenautokorrektur protokollieren.

Einstellungen für die Objektnamen-Autokorrektur

Bild 4: Einstellungen für die Objektnamen-Autokorrektur

Zu Testzwecken enthält die Beispieldatenbank einige Objekte, die auf die Tabelle und die enthaltenen Felder verweisen. Auf diese Weise können wir nach der änderung prüfen, ob die änderungen auch auf die referenzierenden Objekte übertragen wurden.

Wir verwenden dazu ein Formular namens frmKunden, das nur Daten der Tabelle Kunden anzeigt, ein Formular namens frmKundenMitAnreden, welches eine Abfrage mit den Daten aus den beiden Tabellen als Datenherkunft verwendet und ein Formular mit Unterformular, welches die Anreden im Hauptformular und die zugeordneten Kunden im Unterformular anzeigt.

Eine Abfrage namens qryKundenNachAnrede fasst die Daten der beiden Tabellen Kunden und Anreden zusammen.

Auf Makros wollen wir an dieser Stelle verzichten.

Außerdem schreiben wir ein paar VBA-Prozeduren, welche auf die Daten der Tabellen Kunden und Anreden zugreifen.

Bevor wir die Tabellen- und Feldnamen angepasst haben, haben wir die vorherige Version der Datenbank gesichert, und zwar unter dem Namen FeldnamenRefaktorieren_Backup.accdb.

Danach nehmen wir folgende änderungen vor:

  • Name der Tabelle Anreden auf tblAnreden
  • Feld Anrede-ID wird AnredeID
  • Feld Anrede m/w wird Bezeichnung
  • Tabelle Kunden wird tblKunden
  • Feld Kunde-ID wird KundeID
  • Feld Anrede-ID wird AnredeID
  • Feld Straße wird Strasse
  • Feld Telefon geschäftlich wird TelefonGeschaeftlich

Nachdem die änderungen an den Tabellen Kunden und Anreden durchgeführt wurden, sehen diese wie in Bild 5 aus. Durch die änderungen an der Tabelle Anreden, die nun tblAnreden heißt, müssten auch Anpassungen am Fremdschlüsselfeld AnredeID der Tabelle tblKunden vorgenommen worden sein.

Die Tabellen nach der änderung

Bild 5: Die Tabellen nach der änderung

Nach der änderung schauen wir uns den Entwurf der Tabelle tblKunden an und wechseln dort für das Feld AnredeID zur Registerseite Nachschlagen der Feldeigenschaften. Hier finden wir die korrekt geänderte Abfrage vor (siehe Bild 6).

Fremdschlüsselfeld nach der änderung der verknüpften Tabelle

Bild 6: Fremdschlüsselfeld nach der änderung der verknüpften Tabelle

Komplexere Ausdrücke

Wenn wir nun statt einer einfachen SELECT-Anweisung einen komplizierteren, von Hand geänderten Ausdruck für die Abfrage in der Eigenschaft Datensatzherkunft nutzen, funktioniert die Objektnamen-Autokorrektur in unseren Tests immer noch. Wenn Sie zum Beispiel einfach zwei Felder verknüpfen wie im folgenden Beispiel, wird die Abfrage ebenfalls ordnungsgemäß angepasst:

SELECT [Anreden].[Anrede-ID], [Anreden].[Anrede m/w] & Anreden.[Anrede-ID] FROM Anreden;

Die Tabelle Objektnamen-Autokorrekturprotokoll

Da wir die Option änderungen für Objektnamenautokorrektur protokollieren aktiviert haben, erstellt Access nun eine neue Tabelle namens Objektnamen-Autokorrekturprotokoll, in der es die einzelnen durch die änderung verursachten änderungen einträgt. Genaugenommen muss man es etwas anders formulieren: Die automatischen änderungen werden nämlich nicht schon in die Tabelle eingetragen, sobald der Programmierer die auslösenden änderungen vornimmt, sondern erst, wenn die von den automatischen änderungen betroffenen Objekte erstmals nach der änderung geöffnet werden.

Access prüft also wohl erst beim öffnen der Objekte, ob es änderungen in den zugrunde liegenden Objekten gibt und nimmt dann die Autokorrektur vor. Dies ist auch der Grund, warum man bei Datenbanken, deren Performance nicht überzeugt, als eine der ersten Aktionen die Autokorrektur abschaltet.

Die Tabelle Objektnamen-Autokorrekturprotokoll sieht schließlich wie in Bild 8 aus.

änderungen durch die Objektnamen-Autokorrektur

Bild 7: änderungen durch die Objektnamen-Autokorrektur

Sie enthält bereits Einträge, die durch die nachfolgend beschriebenen änderungen verursacht wurden.

Abfragen

Dann gehen wir weiter zur Abfrage qryKundenMitAnrede. Diese sah zuvor wie in Bild 7 aus.

Die Abfrage qryKundenMitAnrede vor den änderungen

Bild 8: Die Abfrage qryKundenMitAnrede vor den änderungen

Nachdem wir sie nach den änderungen erneut geöffnet haben, finden wir dort ebenfalls die korrigierten Tabellen- und Feldnamen vor (siehe Bild 9).

Die Abfrage qryKundenMitAnrede nach den änderungen

Bild 9: Die Abfrage qryKundenMitAnrede nach den änderungen

Formulare

Auch die drei vorbereiten Formulare wollen wir uns anschauen. Beim ersten Formular namens frmKunden hat dies gut geklappt. Wie Bild 10 zeigt, wurde nicht nur die als Datenherkunft verwendet Tabelle von Kunden in tblKunden geändert, sondern auch die Namen der von den Steuerelementen referenzierten Felder.

Formular mit geänderten Steuerelementinhalten und Quelltabelle

Bild 10: Formular mit geänderten Steuerelementinhalten und Quelltabelle

Das zweite Formular namens frmKundenMitAnrede, das Sie in Bild 11 sehen, wurde wie gewünscht angepasst. Es bezieht seine Daten ja aus einer Abfrage, welche die Daten der beiden Tabellen tblKunden und tblAnreden zusammenfasst. Das dritte Formular frmKundenNachAnrede hatte die Besonderheit, dass wir die Daten der Kunden-Tabelle zu einer im Hauptformular ausgewählten Anrede in einem Unterformular anzeigen.

Auch mit einer Abfrage als Datenherkunft gelingt die Autokorrektur.

Bild 11: Auch mit einer Abfrage als Datenherkunft gelingt die Autokorrektur.

Hier haben wir nach der änderung der Tabellen- und Feldnamen also besonderes Augenmerk auf die beiden Eigenschaften Verknüpfen von und Verknüpfen nach des Unterformular-Steuerelements gelegt. Aber auch hier hat die Objektnamen-Autokorrektur wie erwartet gearbeitet (siehe Bild 12). An dieser Stelle gehen wir davon aus, dass die Objektnamen-Autokorrektur auch in Berichten und Makros funktioniert und wenden uns dem VBA-Code zu.

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