M:N-Beziehungen

Veröffentlicht am 30.12.2003

Frage:

Aufbauend auf dem Bestellformular, das in dem Beispiel der Nordwind Datenbank enthalten ist, habe ich, da ein Kunde bekanntlich mehrere Mitarbeiter hat, eine Tabelle Mitarbeiter erstellt, die über 1:n an die Tabelle Kunden gebunden ist.

Nun möchte ich im Bestellformular den Namen eines Mitarbeiters des gerade gewählten Kunden aus einer Liste auswählen und in die Bestellung mit aufnehmen. Es funktioniert insofern, als dass beim ersten Öffnen des Formulars nach Klicken des Kombinationsfeldes alle Mitarbeiter dieses Kunden angezeigt werden und ausgewählt werden können. Sobald ich aber auf den nächsten Kunden gehe und erneut das Kombinationsfeld anklicke, werden dort nicht die Mitarbeiter des zweiten Kunden, sondern die des ersten Kunden angezeigt.

Ist das ein Fehler in Access oder kann man das Problem selber lösen?

Antwort:

In Ihrem Nordwind-Beispiel kann ein Kunde mehrere Mitarbeiter haben. Anderseits kann jeder Mitarbeiter auch mehrere Kunden betreuen.

In diesem Fall würde ich an Ihrer Stelle eine Zwischentabelle anlegen, die diese m:n-Beziehung darstellt. Zunächst legen Sie eine Tabelle namens Mitarbeiter mit folgenden Feldern an:

MitarbeiterAutowert (Primärschlüssel)
NachnameText[50]
VornameText[50]
AbteilungText[50]

Die Zwischentabelle heißt MitarbeiterUndKunden und enthält diese zwei Felder:

MitarbeiterAutowert (Primärschlüssel)
MitarbeiterZahl (Long Integer)
Kunden-CodeText[5]

Der Primärschlüssel der Zwischentabelle besteht aus beiden Feldern, damit die Beziehung zwischen einem bestimmten Mitarbeiter und einem bestimmten Kunden nur einmal vorkommen kann.

Öffnen Sie nun die Beziehungen der Datenbank (Extras / Beziehungen) und fügen Sie die Tabellen Mitarbeiter und MitarbeiterUndKunden hinzu. Erstellen Sie dann Beziehungen zwischen diesen beiden Tabellen und der Tabelle Kunden wie in Abb. 1 unten.

Erstellen Sie dann ein Formular, das auf der Tabelle MitarbeiterUndKunden basiert, und ein Kombinationsfeld mit diesen Eigenschaften:

SteuerelementinhaltMitarbeiterNr
DatensatzherkunftSELECT MitarbeiterNr, Nachname, Vorname, Abteilung FROM Mitarbeiter;
Gebundene Spalte1
Spaltenanzahl4
Spaltenbreiten0cm;2,54cm;2,54cm;2,54cm

Dieses Kombinationsfeld erlaubt die Auswahl eines Mitarbeiters. Die vier Spalten zeigen den Nachnamen, Vornamen und die Abteilung des Mitarbeiters. Der Primärschlüsselwert (MitarbeiterNr) bleibt im Kombinationsfeld versteckt.

Ziehen Sie dann das neue Formular per Drag & Drop auf das Formular Kunden in der Entwurfsansicht. Die Verknüpfung zwischen dem Kunden-Formular und dem Mitarbeiter-Unterformular wird auf dem Feld Kunden-Code automatisch für Sie erstellt.

Wenn Sie das Formular nun in der Formularansicht öffnen, können Sie für jeden Kunden die zuständigen Mitarbeiter bearbeiten. Die Beziehungen, die Sie vorhin definiert haben, sorgen für die richtige m:n-Darstellung des Mitarbeiter-Kunden- Verhältnisses

Unsere Dienstleistungen

Als starker Partner an Ihrer Seite unterstützen wir Sie in folgenden Breichen:

Access-Programmierung

Benötigen Sie Unterstützung bei der Programmierung von Access-Anwendungen? Wir bieten die gesamte Bandbreite von der Access-Programmierung auf Stundenbasis bis zur Durchführung eines Software-Projektes als Auftragsarbeit an. Kontaktieren Sie uns für ein kostenloses Erstgespräch.

JETZT KONTAKTIEREN

Software-Beratung

Haben Sie ein Software-Projekt und Sie wissen nicht, ob Access die richtige Plattform ist? Wir haben über 20 Jahre Erfahrung beim Erstellen von Windows-, Web und mobilen Anwendungen. Kontaktieren Sie uns für eine kostenlose Erstberatung.

JETZT KONTAKTIEREN