Zur Hauptseite ... Zum Onlinearchiv ... Zum Abonnement ... Zum Newsletter ... Zu den Tools ... Zum Impressum ... Zum Login ...

Achtung: Dies ist nicht der vollständige Artikel, sondern nur ein paar Seiten davon. Wenn Sie hier nicht erfahren, was Sie wissen möchten, finden Sie am Ende Informationen darüber, wie Sie den ganzen Artikel lesen können.

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

E-Mail:

Gedrucktes Heft

Diesen Beitrag finden Sie in Ausgabe 3/2018.

Unser Angebot für Sie!

Lesen Sie diesen Beitrag und 500 andere sofort im Onlinearchiv, und erhalten Sie alle zwei Monate brandheißes Access-Know-how auf 72 gedruckten Seiten! Plus attraktive Präsente, zum Beispiel das bald erscheinende Buch 'Access 2010 - Das Grundlagenbuch für Entwickler'!

Diesen Beitrag twittern

Objekt- und Feldnamen refaktorieren

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.

Sie haben das Ende des frei verfügbaren Teils des Artikels erreicht. Lesen Sie weiter, um zu erfahren, wie Sie den vollständigen Artikel lesen und auf viele hundert weitere Artikel zugreifen können.

Sind Sie Abonnent?Jetzt einloggen ...
 

Kompletten Artikel lesen?

Einfach für den Newsletter anmelden, dann lesen Sie schon in einer Minute den kompletten Artikel und erhalten die Beispieldatenbanken.

Bitte teilen Sie uns Ihre Anrede, Ihren Namen und Ihre E-Mail-Adresse mit:

Anrede:
Vorname:
Nachname:
E-Mail:

© 2003-2018 André Minhorst Alle Rechte vorbehalten.