Access-o-Mania

Access-Forum (Deutsch/German) => Formular => Thema gestartet von: AndyMcNab am Juli 05, 2017, 08:56:31

Titel: Unterformular 1:1-Beziehung
Beitrag von: AndyMcNab am Juli 05, 2017, 08:56:31
Hallo,
ich habe zwei Tabellen, tblPersonen und tblMitglieder, dazwischen eine 1:1-Beziehung.
Ich habe nun ein Formular für das anlegen einer neuen Person und möchte nun ein Formular für das anlegen eines neuen Mitglieds.

Problem:
Ist weder Person noch Mitglied vorhanden erstelle ich einfach ein Formular mit den Personendaten und ein Unterformular mit den Mitgliedsdaten und beides wird neu angelegt!

ABER

Wie kann ich umsetzen, dass wenn eine Person schon vorhanden ist und dann Mitglied wird ich diese Person im Formular auswählen kann und dann einfach um die Mitgliedsdaten ergänzen?
Titel: Re: Unterformular 1:1-Beziehung
Beitrag von: Lachtaube am Juli 05, 2017, 09:04:48
Bei einer 1:1-Beziehung bedarf es keines Unterformulars zur Datenpflege. Du solltest eine Abfrage über beide Tabellen mit Left-Join auf die Mitglieder verwenden.SELECT p.*
  FROM Person AS p
  LEFT JOIN Mitglied AS m
    ON p.PersonID = m.MitgliedID
Einfach so in die SQL-Ansicht einer neuen Abfrage kopieren, sowie Tabellen- und Schlüsselfeldnamen anpassen. p und m stellen nur kurze Alias-Namen dar.
Titel: Re: Unterformular 1:1-Beziehung
Beitrag von: AndyMcNab am Juli 05, 2017, 10:06:37
Sieht bei mir so aus
SELECT * FROM tblPersonen LEFT JOIN tblMitglieder ON tblPersonen.[personenID] = tblMitglieder.[personenID];
und funktioniert super!

Jetzt noch eine Frage.
Die Orte (mit PLZ und Name) speichere ich in der tblOrte. In der tblPersonen ist dann der Wohnort mit der ortID hinterlegt.
Jetzt würde ich mir in der Abfrage gerne noch ortName, ortPLZ anzeigen lassen, wo tblPersonen.ortID = tblOrt.ortID.

Wie bekomme ich das hin? Das wären dann 3 JOINS?
Titel: Re: Unterformular 1:1-Beziehung
Beitrag von: Lachtaube am Juli 05, 2017, 11:05:43
Nun, für die OrtID könntest Du im Formular ein Kombifeld verwenden und analog der FAQ 4.15 (http://www.donkarl.com/FAQ/FAQ4Formulare.htm#4.15) ein ungebundenes Textfeld für die 3. Spalte verwenden.