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 2/2010.

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

Zusammenfassung

Speichern Sie Daten in mehrwertigen Feldern und lesen Sie diese wieder aus.

Techniken

Datenmodellierung, mehrwertige Felder

Voraussetzungen

Access 2007 und höher

Beispieldateien

MehrwertigeFelder.mdb

Shortlink

www.access-im-unternehmen.de/706

Nachschlage- und mehrwertige Felder

André Minhorst, Duisburg

Access 2007 bringt einige Features, welche die Entwicklergemeinde spalten. Eines davon sind die mehrwertigen Felder, auch Multivalue Fields genannt: Sie erlauben dem Einsteiger, leicht mehrere Werte zu einem Nachschlagefeld einer Tabelle hinzuzufügen. Wir werfen einen genauen Blick auf dieses Feature, was auch für Gegner dieser Technik interessant sein dürfte: Immerhin ist keiner davor gefeit, eine mit mehrwertigen Feldern gespickte Datenbank in eine mit sauberer Datenmodellierung zu überführen - hier erfahren Sie deshalb auch, wie Sie an die Daten aus solchen Feldern herankommen.

Der Ausgangspunkt für den Microsoft'schen Ansatz, mehrwertige Felder einzuführen, ist der Wunsch, Access-Einsteigern die Verwendung von Nachschlage- beziehungsweise Kombinationsfeldern möglichst einfach zu machen. Dies aber nicht nur für die Verwendung von Daten aus 1:n-Beziehungen, sondern auch für m:n-Beziehungen!

Das bedeutet prinzipiell, dass ein Feld mehrere Werte speichern kann. Ein Beispiel verdeutlicht dies: Wenn jeder Mitarbeiter eines Unternehmens an mehreren Projekten beteiligt sein kann, und jedes Projektteam wiederum aus einem oder mehrere Mitarbeitern besteht, dann verwenden Sie eine Mitarbeitertabelle, eine Projektetabelle und eine Verknüpfungstabelle, mit der Sie die Mitarbeiter den Projekten zuweisen und umgekehrt (s. Abb. 1).

pic001.png

Abb. 1: Der herkömmliche Weg, m:n-Beziehungen im Datenmodell nachzubilden

Mehrwertige Felder bilden dies ohne die notwendigen Felder im Hintergrund nach und gleichzeitig gibt es auch noch eine Erweiterung von Kombinations- und Listenfeldern, die das Auswählen und Bearbeiten der enthaltenen Daten erlaubt.

Nachschlagefelder in Access 2007

Mit der Einführung mehrwertiger Felder hat Microsoft gleich auch noch die Bedienung von Nachschlagefeldern und deren Einrichtung verändert. Beginnen wir mit einem einfachen Nachschlagefeld, das seine Werte aus einer Wertliste beziehen soll und per Nachschlage-Assistent hergestellt wird. Dort geben Sie zunächst an, dass Sie die im Nachschlagefeld anzuzeigenden Werte selbst eingeben, also eine Wertliste anlegen möchten (s. Abb. 2).

pic002.png

Abb. 2: Festlegen einer Wertliste anstelle einer Tabelle oder Abfrage als Datensatzherkunft eines Nachschlagefelds

Anschließend legen Sie fest, wie viele Spalten das Nachschlagefeld anzeigen soll und wie die enthaltenen Daten lauten (s. Abb. 3). Die Angabe eines Wertes größer 1 macht hier insofern Sinn, als dass man statt eines Kombinationsfelds als Nachschlagefeld auch gleich ein Listenfeld verwenden kann.

pic003.png

Abb. 3: Festlegen der Spaltenzahl und eingeben der Werte des Nachschlagefeldes

Schließlich legen Sie im dritten Schritt den Namen des Nachschlagefeldes fest und geben an, ob Sie jeweils nur einen oder mehrere Werte auswählen möchten (s. Abb. 4) - später wählen wir die Option Mehrere Werte zulassen aus, um ein mehrwertiges Feld zu erstellen. Der Assistent hat alle notwendigen Eigenschaften eingestellt, damit Sie die beiden angegebenen Werte per Kombinationsfeld auswählen können (s. Abb. 5). Gegenüber Access 2003 und älter finden Sie hier vier neue Eigenschaften vor:

pic004.png

Abb. 4: Letzte Angaben vor Fertigstellung des Nachschlagefeldes

pic005.png

Abb. 5: Die Einstellung dieser Eigenschaften ist das Resultat des Nachschlage-Assistenten.

  • Mehrere Werte zulassen: Legt fest, ob Sie nur einen oder mehrere Werte der Datenherkunft (Wertliste, Tabelle oder Abfrage) auswählen können (dies entspricht prinzipiell einer m:n-Beziehung).
  • Wertlistenbearbeitung zulassen: Darf der Benutzer die Elemente einer Wertliste bearbeiten?
  • Bearbeitungsformular für Listenelemente: Hier können Sie ein Formular angeben, mit dem der Benutzer die enthaltenen Werte bearbeiten kann.

Wenn Sie alle vier Eigenschaften auf Nein belassen beziehungsweise Bearbeitungsformular für Listenelemente leer lassen, bedient man das Nachschlagefeld wie in früheren Access-Versionen.

Stellen Sie testweise zunächst die Eigenschaft Wertlistenbearbeitung zulassen auf den Wert Ja ein. Wenn Sie nun in die Datenblattansicht der Tabelle wechseln und das Nachschlagefeld aufklappen, erscheint ein kleines Symbol, über das Sie per Mausklick den Dialog aus Abb. 6 öffnen können.

pic006.png

Abb. 6: Komfortable Bearbeitung von Wertlisteneinträgen

Änderungen an der Liste werden klaglos in die semikola-separierte Eigenschaft Wertliste übernommen, und auch die Eigenschaft Standardwert lässt sich hier komfortabel einstellen.

Die Bearbeitung der Listenelemente ist auch in Formularen möglich - am einfachsten aktivieren Sie dies, indem Sie Wertlistenbearbeitung zulassen im Tabellenentwurf auf Ja einstellen und das Formular einfach mit den Feldern der Wertliste füllen, nachdem Sie als Datenherkunft die betroffene Tabelle angegeben haben. Sie können diese und weitere Eigenschaften dann aber für jedes Formular individuell einstellen (s. Abb. 7).

pic007.png

Abb. 7: Die Eigenschaften bezüglich der Nachschlagefelder werden auf die Steuerelemente im Formular übertragen.

Nachteil bearbeitbarer Wertlisten

Eine Wertliste sollten Sie wirklich nur dann einsetzen, wenn die enthaltenen Daten für alle Zeiten gleich bleiben. Bedenken Sie, dass es sich bei der Eigenschaft Wertliste prinzipiell um ein Element des Datenmodells handelt und dieses nicht so einfach durch den Benutzer geändert werden sollte.

Der große Nachteil bearbeitbarer Wertlisten ist, dass es keine Möglichkeit gibt, die vom Benutzer geänderten Daten zu validieren. Der Eingabe redundanter und in der Folge inkonsistenter Daten ist also Tür und Tor geöffnet.

Ein weiterer Nachteil resultiert aus der Beobachtung, dass der Inhalt der Wertliste unter bestimmten Umständen, die wir später aufdecken werden, in einer Eigenschaft eines Steuerelements steckt. Eine Änderung der Wertliste erfordert das anschließende Speichern des Formulars und somit eine Änderung des Entwurfs eines Objekts - und das ist in der Runtime-Version von Access grundsätzlich nicht möglich. Wenn Sie dem Benutzer Ihrer Datenbank also eine solche Funktion bereitstellen möchten, ziehen Sie in Betracht, dass dies mit der Runtime nicht funktionieren wird.

Vom Nachschlagefeld zum mehrwertigen Feld

Als Beispiel für ein mehrwertiges Feld haben wir in der Beispieltabelle tblMitarbeiter das Feld Funktionen eingerichtet, aus dem mehrere Werte ausgewählt werden können. Ausgehend von einem normalen Nachschlagefeld, das wie oben beschrieben per Assistent erstellt wurde, brauchen wir nur die Eigenschaft Mehrere Werte zulassen auf Ja einzustellen. Es erscheint dann eine Meldung, die besagt, dass dies nicht rückgängig zu machen sei.

Das Ergebnis sieht wie in Abb. 8 aus. Wählt man die Listeneinträge wie in dieser Abbildung aus, erscheinen diese anschließend in der folgenden Form als Feldinhalt:

pic008.png

Abb. 8: Ein mehrwertiges Feld

Kaffeekocher; Mädchen für alles; Programmierer

Im Hintergrund

Gehen wir ein wenig in die Tiefe und schauen uns an, was sich in den Systemtabellen getan hat. Dazu aktivieren wir zunächst deren Anzeige, indem wir aus dem Kontextmenü der Überschrift des Navigationsbereichs den Eintrag Navigationsoptionen... auswählen und dort die Option Systemobjekte anzeigen aktivieren.

Im Navigationsbereich erschienen nun einige zuvor nicht sichtbare Tabellen, von denen uns zunächst die Tabelle MSysComplexColumns interessiert. Diese sieht aktuell wie in Abb. 9 aus und enthält, was wir suchen: einen Hinweis darauf, dass Access im Hintergrund mehr als eine semikola-separierte Liste ausgewählter Elemente speichert.

pic009.png

Abb. 9: Diese Tabelle enthält Informationen über die Speicherung des Inhalts mehrwertiger Felder.

In dieser Tabelle taucht der Name unseres Feldes auf, eine ComplexID, die möglicherweise als eindeutiger Index der mehrwertigen Felder dient, und eine ComplexTypeObjectID. Interessant sind die beiden Einträge ConceptualTableID und FlatTableID: Diese enthalten Einträge, die wir in einer anderen Systemtabelle, nämlich MSysObjects, wiederfinden. Nach dem Ausblenden einiger Spalten und dem Filtern nach den Werten 70 und 138 im Feld Id liefert die Tabelle das Bild aus Abb. 10. Auf die Tabelle aus der zweiten Zeile können wir leider nicht zugreifen - Access meldet, dieses Objekt sei nicht vorhanden.

pic010.png

Abb. 10: Die zweite Tabelle enthält die Daten des mehrwertigen Feldes der ersten Tabelle.

Wertliste erben

Eine Eigenschaft von Kombinations- und Listenfeldern heißt Wertliste erben. Diese Eigenschaft legt schlicht und einfach fest, ob Änderungen an der Wertliste über Kombinations- und Listenfelder an die Wertliste der zugrunde liegenden Tabelle weitergegeben werden. Wenn ein Feld also in mehr als einem Formular vorkommt und Sie dem Benutzer Änderungen am Inhalt der Wertliste erlauben (was Sie aus den weiter oben erläuterten Gründen aber gar nicht tun sollten), dann sollten Sie die Eigenschaft Wertliste erben auf Ja einstellen, damit die übrigen Formulare auch etwas davon haben.

Genau genommen verhält es sich so: Wenn Wertliste erben auf Ja eingestellt ist, werden sowohl Änderungen an der Wertliste des Nachschlagefeldes im Formular an die zugrunde liegende Tabelle weitergegeben als auch umgekehrt. Wenn die Eigenschaft den Wert Nein aufweist, dann erfährt die Tabelle nichts von neuen Listenwerten im Formular und umgekehrt.

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.

E-Mail:

Verwandte Beiträge:

Lookup-Daten verwalten

Auswahlfelder im Ribbon

Kontextmenüs von A bis Z

Tipps und Tricks

m:n-Beziehung per Kontrollkästchen verwalten

© 2003-2015 André Minhorst Alle Rechte vorbehalten.