Warum noch ein Access-Buch?
Für wen ist das Buch?
Jetzt bestellen
+ direkter Download des eBooks!
Nur EUR 59,95!
Fehler gefunden?
Bitte melden!
Wünsche an das Buch?
Her damit!
Was denken die Leser über dieses Buch?
Lesen Sie aktuelle Rezensionen!
Kapitel des noch nicht veröffentlichten Buchs zum Downloaden, Probelesen und Kommentieren
Beispieldatenbanken
Zusätzliches Material

Das Buch im HTML-Format

Für unbestimmte Zeit bieten Addison-Wesley und André Minhorst den kompletten Inhalt des Buchs als Download an. Schauen Sie rein und informieren Sie sich über den Inhalt! Und wenn Ihnen das Buch nützlich erscheint und Sie glauben, dass Sie etwas gelernt haben oder durch das Gelesene sogar etwas Zeit und somit Geld bei Ihrer Arbeit einsparen konnten, können Sie sich ja beim Autor und beim Verlag revanchieren - beispielsweise durch den Kauf dieses Buchs.

Am schönsten wäre es natürlich, wenn Sie das Buch direkt hier bestellen - Sie erhalten das Buch dann direkt vom Verlag, und der Autor und Verlag haben dann noch mehr davon, als wenn Sie es anderswo kaufen.

Danke für Ihr Interesse!

4.5.9 1:n-Beziehung per Listenfeld

4.5.10 m:n- Beziehungen in Haupt- und Unterformular

Wie bereits erwähnt, bieten Listenfelder zur Verwaltung von Daten aus m:n-Beziehungen nicht den Komfort, dass man die im Listenfeld angezeigten Daten direkt bearbeiten kann. Dafür ist eine andere Lösung wesentlich sinnvoller: Die Darstellung einer m:n-Beziehung in einer Kombination aus Formular und Unterformular.

Dabei zeigt das Hauptformular die Daten der einen Seite der Beziehung an, während das Unterformular die Daten der Verknüpfungstabelle und der anderen Seite der Beziehung enthält.

Das bekannteste Beispiel für eine solche Darstellung ist vermutlich das Formular Bestellungen aus der Nordwind-Datenbank (siehe Abbildung 4.41).

Abbildung 4.41: Beispiel für die Verwaltung von Daten in einer m:n-Beziehung

Zu Demonstrationszwecken reicht eine einfache m:n-Beziehung mit den notwendigsten Feldern wie in Abbildung 4.42. Die beiden Tabellen tblProjekte und tblMitarbeiter werden über die Verknüpfungstabelle tblProjektzeiten miteinander verbunden. Interessant wird dieses Beispiel durch die Tatsache, dass auch die Verknüpfungstabelle einige Felder enthält - in diesem Fall sogar die wichtigsten.

Die Verknüpfungstabelle dient dem Speichern der Zeiten, die die Mitarbeiter mit den jeweiligen Projekten verbracht haben. Um diese Informationen nicht nur quantitativ, sondern auch qualitativ auswerten zu können, wird nicht nur die Zeit, sondern auch das Datum der Tätigkeit gespeichert.

Für die Beziehungen legen Sie referentielle Integrität fest, da so sichergestellt ist, dass für jeden Eintrag in die Tabelle tblProjektzeiten ein Projekt und ein Mitarbeiter ausgewählt werden.

Wer dieses Beispiel ausbauen möchte, wird natürlich die Projekt- und die Mitarbeitertabelle noch um einige Felder erweitern. Aber auch die Verknüpfungstabelle tblProjektzeiten kann noch weitere wichtige Informationen speichern: etwa eine Kurzbeschreibung der jeweiligen Tätigkeit und eine Tätigkeitsart wie »Konzeption«, »Programmierung« oder »Test«.

Abbildung 4.42: Datenmodell der Beispieltabellen

Hauptformular der m:n-Beziehung

Bevor Sie sich der Erstellung des Hauptformulars zuwenden, müssen Sie bei m:n-Beziehungen jeweils zunächst überlegen, von welcher der beiden Tabellen Sie nur je einen Datensatz im Hauptformular anzeigen möchten und welche Tabelle die Datensätze für das Unterformular liefert. Im vorliegenden Fall sind beide Varianten interessant: Man könnte sich sowohl zu jedem Projekt die Zeiten ansehen, die die einzelnen Mitarbeiter damit verbracht haben, andererseits ist es vielleicht nicht ganz uninteressant, womit der eine oder andere Mitarbeiter seine Zeit verbringt.

Wichtiger für die Auswertung von Projekten ist sicher die erste Variante. Das Hauptformular zeigt also die Daten der Tabelle tblProjekte an, die dementsprechend auch als Datensatzquelle des Formulars dient. Wenn Sie aus der Feldliste die beiden Felder ProjektID und Projekt in den Detailbereich des Formulars ziehen, ist der erste Teil der Arbeit bereits erledigt (siehe Abbildung 4.43).

Abbildung 4.43: Hauptformular der m:n-Beziehung (»frmProjektzeiten«)

Als Nächstes fügen Sie nun noch das Unterformular zur Anzeige der Mitarbeiter und der jeweiligen Projektzeiten hinzu.

Unterformular der m:n-Beziehung

Das Unterformular soll anzeigen, welcher Mitarbeiter an welchem Datum wie viele Stunden mit einem Projekt verbracht hat. Dazu legen Sie für das Unterformular die Abfrage aus Abbildung 4.44 als Datensatzquelle an.

Abbildung 4.44: Datensatzquelle des Unterformulars der m:n-Beziehung

Der Aufbau dieser Abfrage ist für alle Unterformulare von Formularen zur Darstellung von m:n-Beziehungen gleich. Die Abfrage enthält jeweils die Verknüpfungstabelle und die Tabelle, deren Daten nicht im Hauptformular angezeigt werden - in diesem Fall also die Tabellen tblProjektzeiten und tblMitarbeiter.

Auch für die Felder gibt es feste Regeln. Sie benötigen immer folgende Felder:

  • Fremdschlüsselfeld der Verknüpfungstabelle zur Tabelle, die im Hauptformular angezeigt wird (hier ProjektID).
  • Fremdschlüsselfeld der Verknüpfungstabelle zur anderen Tabelle der m:n-Beziehung (hier MitarbeiterID). Dieses Feld wird in der Regel als Kombinationsfeld ausgeführt, damit ein Datensatz dieser Tabelle ausgewählt werden kann.
  • Alle sonstigen Felder der Verknüpfungstabelle und der im Unterformular anzuzeigenden Tabelle, die im Unterformular angezeigt werden sollen (hier die Felder Datum und Zeit der Tabelle tblProjektzeiten und Telefon der Tabelle tblMitarbeiter).
  • Im Unterformular stellen Sie dann die Eigenschaft Datensatzherkunft auf die soeben erstellte Abfrage ein. Im Detailbereich des Unterformulars finden nicht alle Felder der zugrunde liegenden Abfrage Platz: Das Fremdschlüsselfeld, das auf den entsprechenden Datensatz des Hauptformulars verweist, muss nicht angezeigt werden. Lediglich das Feld zur Auswahl des Mitarbeiters sowie einige weitere Felder sollen später sichtbar sein (siehe Abbildung 4.45).

    Abbildung 4.45: Das Unterformular der m:n-Beziehung in der Entwurfsansicht

    Datenblatt- oder Endlosansicht?

    Da das Unterformular mehrere Datensätze anzeigen soll, stehen die Datenblatt- und die Endlosansicht zur Verfügung. Wenn Sie keine besonderen Ansprüche an das Layout der Steuerelemente im Unterformular haben und außer Text- und Kombinationsfeldern keine Steuerelemente benötigen, sind Sie mit der Datenblattansicht gut bedient. In diesem Beispiel ist das der Fall; stellen Sie daher die Eigenschaft Standardansicht auf Datenblattansicht ein.

    Das Unterformular sieht in der Datenblattansicht nun wie in Abbildung 4.46 aus. Wenn Sie bereits Daten in die Tabelle tblMitarbeiter eingegeben haben oder die Tabellen und Formulare aus der Beispieldatenbank verwenden, können Sie das Unterformular bereits testen. Die Auswahl eines Mitarbeiters per Kombinationsfeld sorgt automatisch für das Füllen der übrigen Felder, die Sie aus der Tabelle tblMitarbeiter in das Unterformular übernommen haben. Fehlt noch eine Eingabe in die beiden Felder Datum und Zeit und das Speichern des Datensatzes. Letzteres schlägt wegen der Regeln zur referentiellen Integrität freilich fehl, da noch kein Wert für das Feld ProjektID der Abfrage qryProjektzeiten angegeben wurde - was ja auch gar nicht geht, da das Feld überhaupt nicht im Formular angezeigt wird.

    Abbildung 4.46: Das Unterformular in der Datenblattansicht

    Wie sollen Sie also Datensätze im Unterformular anlegen, wenn Sie gar keinen Zugriff auf eines der wichtigsten Felder haben? Ganz einfach: Sie automatisieren die Eingabe der Werte für dieses Feld. Das Unterformular ist ja eigentlich für den Einsatz im Hauptformular frmProjektzeiten gedacht, in das Sie es nun einfügen können.

    Nachdem Sie das Unterformular in das Hauptformular eingefügt haben, werfen Sie einen Blick auf die Eigenschaften Verknüpfen von und Verknüpfen nach (siehe Abbildung 4.47). Dort sollte Access beim Einfügen des Unterformulars automatisch jeweils den Wert ProjektID eingetragen haben. Diese Einstellung gewährleistet Folgendes:

  • Das Feld ProjektID wird bei neuen Datensätzen im Unterformular automatisch mit dem entsprechenden Wert des Hauptformulars gefüllt.
  • Das Unterformular zeigt nur Datensätze an, deren ProjektID dem entsprechenden Wert des Hauptformulars entspricht.
  • Abbildung 4.47: Verknüpfen von Haupt- und Unterformular

    Ein Wechsel in die Formularansicht demonstriert die Funktion des Formulars. Sie können nun einen neuen Datensatz im Hauptformular anlegen und im Unterformular die gewünschten Projektzeiten eintragen. Dazu wählen Sie dort einfach den Mitarbeiter aus und geben Datum und Zeit ein - um den Inhalt des Feldes ProjektID kümmert sich Access selbst (siehe Abbildung 4.48).

    Abbildung 4.48: m:n-Beziehung im Einsatz

    Nächster Abschnitt:

    4.5.11 m:n-Beziehungen per Listenfeld

    © 2006-2008 André Minhorst Alle Rechte vorbehalten.