Februar 27, 2021, 17:04:18

Neuigkeiten:

Wenn ihr euch für eine gute Antwort bedanken möchtet, im entsprechenden Posting einfach den Knopf "sag Danke" drücken!


m:n Beziehung in einem Formular

Begonnen von explo, Januar 29, 2021, 00:46:56

⏪ vorheriges - nächstes ⏩

explo

Hallo,

ich bin relativ neu bei Access und hoffe daher auf Hilfe von euch, da ich keine funktionierende Lösung finden konnte.

Ich möchte Personen abspeichern. Diese sollen unter Anderem Hobbys haben. Zwischen denen besteht einen m:n Beziehung.
D.h. ich habe eine Tabelle Personen.
Eine Tabelle Personen_Hobbys welche ID,Personen_ID und Hobby_ID beinhaltet und die Personen mit den Hobbys verknüpft.
Und schließlich eine Tabelle Hobbies, in der die Hobby_ID und die eigentlichen Hobbys stehen.


Die 3 Tabellen habe ich unter Beziehungen über die ID's  Hobby_ID - Hobby_ID und Personen_ID - Personen_ID miteinander verknüpft.

Jetzt möchte ich ein Formular haben mit einem Subformular, indem ich neue Personen eintragen kann und zu denen kein, ein oder mehrere Hobbys schreiben kann.

Das funktioniert auch alles bis zu dem Problem, dass wenn ich versuche ein Hobby ins Formular zu schreiben, welches bereits in der Tabelle Hobbys existiert. Access versucht dann einen neuen Eintrag in der Tabelle Hobbys zu machen, statt in dem Fall den bestehenden zu nehmen und diesen über die Tabelle Personen_Hobbys mit dem Mitglied zu verknüpfen.

Wie löse ich so etwas?  :)

Vielen vielen Dank

Ps: Ich konnte immer nur Lösungen finden, in denen es möglich war, entweder NUR bestehende Hobbys zu nehmen, oder NUR neue Hobbys zu schreiben.

MzKlMu

Hallo,
Du hast im Unterformular zur Zuordnung die falschen Schlüsselfelder verwendet.
Zur eindeutigen Unterscheidung sollten die Fremdschlüsselfelder einen anderen Namen haben als die Primärschlüssel (einfach ein _F anhängen).

Zeige mal ein Bild des Beziehungsfensters.
Gruß
Klaus

explo

Hallo Klaus,

erstmal sehr vielen Dank für deine Hilfe. Das ist toll :)
Es hat sich ein bisschen verändert, in der Hinsicht hin, dass Personen jetzt Mitglieder sind und Hobbys jetzt Berufe sind. Aber das Problem bleibt das Gleiche.

Anzumerken ist noch, dass ich in das Unterformular alles alles rein habe. Also die ID von Mitglieder und alle Felder von Mitglieder_Beruf und Beruf.

Fremdschlüssel habe ich geändert.

Vielen Dank

Viele Grüße

Tom

explo


MzKlMu

Gruß
Klaus

explo

Januar 30, 2021, 23:54:34 #5 Letzte Bearbeitung: Januar 31, 2021, 16:57:26 von MzKlMu
Ich bekomme das Bild mit der Funktion hier im Forum nicht angezeigt. Habe dann vorhin meinen Post oben bearbeitet und den Link so eingefügt, aber das hat anscheinend auch nicht funktioniert. Dritter Versuch nun:
Ich habe das Bild hier angehängt. MzKlMu
Edit: Jetzt ist der Link zumindest da :) Mit den [img]  klappt es immer noch nicht. Das ist drin, zeigt er aber nicht an.

MzKlMu

Hallo,
das Kombifeld im Ufo zur Auswahl muss an das entsprechende Fremdschlüsselfeld (..._F) gebunden werden.
Gruß
Klaus

explo

Hallo,

eine Combobox hatte ich noch gar nicht. Leider komme ich aber um das Problem, dass wenn ich in der KomboBox einen bereits existierenden Beruf auswähle, er trotzdem versucht eine neue Beruf_ID zu erstellen, nicht herum.
Hier ist mein aktueller Stand vom Ufo im Formular für das Mitglied 1:
https://imgur.com/a/EvpYRPQ
Die Berufe Landwird, Verkäufer und Lehrer haben noch nicht existiert und habe ich mit dem Ufo erstellt.
Den bereits exisitierenden Beruf Friseur habe ich über das ComboFeld ausgewählt. Jetzt erstellt er aber für diesen einen neue Berufs_ID 6 statt die Nummer 3 zu nehmen, welche korrekt wäre.

Momentan ist Beruf_ID an den Fremdschlüssel gebunden und nicht das Kombifeld. Das Kombifeld kann ich auch nicht an den Fremdschlüssel binden. Es ist zwar unique, aber der Fremdschlüssel BerufID_F ist ein Autowert-Integer während Beruf ein Textfeld ist. Dadurch kommt es bei binden zu einem Error, da die beiden Felder den selben Datentyp haben müssen.

Deswegen weiß ich nicht, wie ich das Kombifeld binden kann.

Vielen Dank

PS: Leider durch Arbeit momentan nur selten Zeit mich mit Access zu beschäftigen. Deswegen meine späten Antworten.


MzKlMu

Februar 06, 2021, 18:04:12 #8 Letzte Bearbeitung: Februar 08, 2021, 17:17:23 von MzKlMu
Hallo,
das Kombifeld muss zwingend an das Fremdschlüsselfeld gebunden werden.
Die Spalte mit der ID wird mit der Spaltebreite 0cm ausgeblendet und die Spalte mit dem Klartext ist dann zu sehen.
Das Kombi muss dann 2 Spalten haben.

ZitatDie Berufe Landwird, Verkäufer und Lehrer haben noch nicht existiert und habe ich mit dem Ufo erstellt.
In diesem Ufo kann man keine neue Berufe erstellen, das muss mit einem separaten Formular gemacht werden.
Erst wenn dort ein Beruf angelegt ist, kann man den auch auswählen.
Das ist unabhängig von dem oben gesagten zum Fremdschlüsselfeld.

Wenn Du nicht klar kommst, lade die DB hier hoch.
Gruß
Klaus

explo

Hallo,

ich versuche das mal mit den 2 Spalten.
Das zweite ist sehr schade, da meine eigentliche Vorstellung war, dass ich bei neuen Mitgliedern deren Beruf angebe und falls dieser bereits exisitert, der Eintrag genommen wird und ansonsten ein neuer gemacht wird.

Danke

Gruß

Tom

MzKlMu

Hallo,
Zitatdass ich bei neuen Mitgliedern deren Beruf angebe und falls dieser bereits exisitert, der Eintrag genommen wird und ansonsten ein neuer gemacht wird.
Das geht völlig problemlos, das muss nur etwas anders gemacht werden, als Du das machen willst.
Gruß
Klaus