Mittwoch, 20. September 2017

Home
Tipps
Bücher
Software
News / Links
Hilfe
Impressum

Sponsored by
QualityHosting

Frage und Antwort
M:N-Beziehungen
von Wolfgang Schmidt
Problem:

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 der TriniDat GmbH:

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:

Mitarbeiter Autowert (Primärschlüssel)
Nachname Text[50]
Vorname Text[50]
Abteilung Text[50]

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

Mitarbeiter Autowert (Primärschlüssel)
Mitarbeiter Zahl (Long Integer)
Kunden-Code Text[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:

Steuerelementinhalt MitarbeiterNr
Datensatzherkunft SELECT MitarbeiterNr, Nachname, Vorname, Abteilung FROM Mitarbeiter;
Gebundene Spalte 1
Spaltenanzahl 4
Spaltenbreiten 0cm;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

 




Ein Service der TriniDat Software-Entwicklung GmbH - Am Wehrhahn 45 - 40211 Düsseldorf

  Suche
Suche starten
  Service
Leserbrief / Frage zu Access
Kontakt
  NewsLetter
NewLetter bestellen
NewsLetter abbestellen
  Partner-Seiten
HyperLink

www.trinidat.de


HyperLink

www.fulldotnet.de