[gelöst] Anzeigen von Elternnamen im Subformular
Moderator: Moderatoren
[gelöst] Anzeigen von Elternnamen im Subformular
Hallo,
Ich versuche derzeit von MS Access auf OOo Base umzusteigen und bin bei meinem ersten Projekt auch gleich auf ein Problem gestoßen zu dem ich bis jetzt (trotz 2 Tage Google-Recherche) noch keine Lösung gefunden habe.
Ich versuche Familiendaten und Verwandschaftsverhältnisse zu erfassen. Dazu habe ich zunächst zwei Tabellen erstellt:
Tabelle 1: Personen (Personen ID, Name, FamilienID)
Tabelle 2: Familie (FamilienID, VaterID, MutterID)
Tabelle 2 dient dazu, jeder FamilienID die PersonenID von Vater und Mutter zuzuordnen.
Jetzt möchte ich gerne ein Formular erstellen, das mir zu jeder Person den Vater und die Mutter ausgibt. Ich schaffe es, daß mir im Subformular die PersonenID (bzw. hier VaterID und MutterID) von Vater und Mutter angezeigt wird. Jedoch würde ich gerne auch die Namen der Eltern, die ja auch als Personen in der Tabelle 1 gelistet sind, angezeigt haben. Das Subformular müsste sich also die Namen wieder aus Tabelle 1 holen. Gibt es irgendeine Möglichkeit, das zu realisieren?
Ich versuche derzeit von MS Access auf OOo Base umzusteigen und bin bei meinem ersten Projekt auch gleich auf ein Problem gestoßen zu dem ich bis jetzt (trotz 2 Tage Google-Recherche) noch keine Lösung gefunden habe.
Ich versuche Familiendaten und Verwandschaftsverhältnisse zu erfassen. Dazu habe ich zunächst zwei Tabellen erstellt:
Tabelle 1: Personen (Personen ID, Name, FamilienID)
Tabelle 2: Familie (FamilienID, VaterID, MutterID)
Tabelle 2 dient dazu, jeder FamilienID die PersonenID von Vater und Mutter zuzuordnen.
Jetzt möchte ich gerne ein Formular erstellen, das mir zu jeder Person den Vater und die Mutter ausgibt. Ich schaffe es, daß mir im Subformular die PersonenID (bzw. hier VaterID und MutterID) von Vater und Mutter angezeigt wird. Jedoch würde ich gerne auch die Namen der Eltern, die ja auch als Personen in der Tabelle 1 gelistet sind, angezeigt haben. Das Subformular müsste sich also die Namen wieder aus Tabelle 1 holen. Gibt es irgendeine Möglichkeit, das zu realisieren?
Zuletzt geändert von eve am Fr, 26.06.2009 23:25, insgesamt 1-mal geändert.
Re: Anzeigen von Elternnamen im Subformular
Also ich würde ja die Datenbank anders aufbauen. Nur eine Tabelle:
[PersonenID; Name; FamilienID; VaterID; MutterID]
Dann sollte über einen Vergleich PersonenID=VaterID? der Vater gefunden werden können.
[PersonenID; Name; FamilienID; VaterID; MutterID]
Dann sollte über einen Vergleich PersonenID=VaterID? der Vater gefunden werden können.
Re: Anzeigen von Elternnamen im Subformular
Da bei der Familie später unter anderem auch das Eheschließungsdatum und -ort eingegeben werden sollen, geht das leider nicht (das hatte ich nur hier zur besseren Übersichtlichkeit nicht angegeben, mein Fehler). Dann wären die Ehedaten der Eltern ja bei den Kindern eingetragen. Die Daten müssen also in einer extra Tabelle erfasst werden.
Re: Anzeigen von Elternnamen im Subformular
Hallo eve,
dann probiere, die Abfrage in folgender Art aufzubauen
Gruß Barlee
dann probiere, die Abfrage in folgender Art aufzubauen
Code: Alles auswählen
SELECT
b.FamilienID,
b.VaterID,
(SELECT a.Name FROM Personen a WHERE a.PersonenID = b.VaterID) as Name_Vater,
b.MutterID
(SELECT a.Name FROM Personen a WHERE a.PersonenID = b.MutterID) as Name_Mutter
FROM Familie b
Re: Anzeigen von Elternnamen im Subformular
Hallo Barlee,
Was ich auch probiere, es funktioniert leider nicht (Ich habe sogar meine Tabellen in a und b umbenannt, damit es auch wirklich genau übereinstimmt). Ich bekomme immer nur die Fehlermeldung:
"Die Dateninhalte konnten nicht geladen werden."
"SQL-Status: S0002 Fehler-Code: -22"
Ich habe auch schon versucht nach dieser Meldung zu googlen, aber leider keine brauchbare Erklärung für diese Fehlermeldung gefunden. Worauf könnte dieser Fehler zurückzuführen sein?
Gruß,
eve
Was ich auch probiere, es funktioniert leider nicht (Ich habe sogar meine Tabellen in a und b umbenannt, damit es auch wirklich genau übereinstimmt). Ich bekomme immer nur die Fehlermeldung:
"Die Dateninhalte konnten nicht geladen werden."
"SQL-Status: S0002 Fehler-Code: -22"
Ich habe auch schon versucht nach dieser Meldung zu googlen, aber leider keine brauchbare Erklärung für diese Fehlermeldung gefunden. Worauf könnte dieser Fehler zurückzuführen sein?
Gruß,
eve
Re: Anzeigen von Elternnamen im Subformular
Hi Eve,
Um den Fehler in Deinem Fall zu lokalisieren, nenne mir bitte:
- die Namen der beteiligten Tabellen
- die Abfrage (den Code) der zu dem Fehler führt
Gruß Barlee
Stop! Umbenennen musst Du nichts. Man vergibt lediglich für bestehende Tabellen einen Aliasnamen, um darauf zurückzugreifen. Beispiel: Für die Tabelle "Personen" wird der Alias "a"vergeben. Über "a" kann man dann auf "Personen" referenzieren.(Ich habe sogar meine Tabellen in a und b umbenannt,
Um den Fehler in Deinem Fall zu lokalisieren, nenne mir bitte:
- die Namen der beteiligten Tabellen
- die Abfrage (den Code) der zu dem Fehler führt
Gruß Barlee
Re: Anzeigen von Elternnamen im Subformular
Hallo,
Nach vielen Stunden basteln und einlesen in SQL funktioniert es jetzt!
Sieht so aus als ob ich hier doch noch etwas SQL lerne (bis vor ein paar Tagen hatte ich noch absolut keine Ahnung von SQL).
Vielen Dank für die Hilfe, Barlee.
Jetzt muß ich es nur noch schaffen, dass die Abfrage die FamilienID aus dem ElternID (was ja identisch ist) übernimmt. Für einen Schubs in die richtige Richtung wäre ich auch hier dankbar
Gruß,
eve
Nach vielen Stunden basteln und einlesen in SQL funktioniert es jetzt!

Code: Alles auswählen
SELECT
"b"."FamilienID",
"b"."VaterID",
( SELECT "a"."Name" FROM "a" WHERE "a"."PersonenID" = "b"."VaterID" ) AS "Name_Vater",
"b"."MutterID",
( SELECT "a"."Name" FROM "a" WHERE "a"."PersonenID" = "b"."MutterID" ) AS "Name_Mutter"
FROM "b"

Vielen Dank für die Hilfe, Barlee.
Jetzt muß ich es nur noch schaffen, dass die Abfrage die FamilienID aus dem ElternID (was ja identisch ist) übernimmt. Für einen Schubs in die richtige Richtung wäre ich auch hier dankbar
Gruß,
eve
Re: Anzeigen von Elternnamen im Subformular
Hallo Barlee,
da habe ich ja fast zeitgleich mit dir geposted. Und natürlich habe ich da auch gleich wieder eine Frage:
Gruß,
eve
da habe ich ja fast zeitgleich mit dir geposted. Und natürlich habe ich da auch gleich wieder eine Frage:
Was ist da mit "über a kann man dann auf Personen referenzieren" gemeint?Stop! Umbenennen musst Du nichts. Man vergibt lediglich für bestehende Tabellen einen Aliasnamen, um darauf zurückzugreifen. Beispiel: Für die Tabelle "Personen" wird der Alias "a"vergeben. Über "a" kann man dann auf "Personen" referenzieren.
Gruß,
eve
Re: Anzeigen von Elternnamen im Subformular
Hallo Eve,
kannst Du da ein Beispiel bringen? Im Moment stehe ich da auf dem Schlauch. Die FamilienID ist doch bereits Teil Deiner Abfrage... ?!
Gruß Barlee
kannst Du da ein Beispiel bringen? Im Moment stehe ich da auf dem Schlauch. Die FamilienID ist doch bereits Teil Deiner Abfrage... ?!
Gruß Barlee
Re: Anzeigen von Elternnamen im Subformular
Hallo Barlee,
Tabelle 1: Personen
PersonenID -- Name -- ElternID
1 -- Hans Meier -- 1
2 -- Paul Meier -- 1
3 -- Johann Meier -- 2
4 -- Lieschen Müller -- 3
5 -- Ernst Müller --
6 -- Elisabeth Bauer --
Tabelle 2: Familie
FamilienID -- VaterID -- MutterID
1 -- 3 -- 4
2 -- --
3 -- 5 -- 6
Die ElternID in Tabelle 1 (bzw. FamilienID in Tabelle 2) dient dazu, jeder Person die Vater-Mutter-Kombination aus Tabelle 2 zuzuordnen.
Das Formular, das ich jetzt erstellen möchte soll im Hauptteil nun zu jeder gewünschten Person die Personendaten aus Tabelle 1 ausgeben (da kommt dann im Laufe der Zeit noch Geburtsdatum, etc. dazu). Im Subformular sollen die Namen der Eltern angegeben werden.
Das Subformular soll jetzt also die FamilienID (bzw. ElternID) aus dem Hauptformular übernehmen und mit dieser ID (die ja auch Bestandteil der Tabelle 2 ist) dann die Elternnamen ausgeben. Die Namensausgabe funktioniert ja jetzt. Aber woher weiß das Subformular für welche FamilienID es die Daten (bzw. Namen) ausgeben soll?
Die Ausgabe soll also in etwa so sein:
PersonenID-- Name -- Vater -- Mutter
1 -- Hans Meier -- Johann Meier -- Lieschen Müller
2 -- Paul Meier -- Johann Meier -- Lieschen Müller
3 -- Johann Meier -- --
4 -- Lieschen Müller -- Ernst Müller -- Elisabeth Bauer
Ich habe vor auf die selbe Weise auch noch die Kinder zu suchen und auszugeben. Ich nehme an die SQL-Abfrage ist im Prinzip genauso aufgebaut, wie die Suche nach den Eltern. Jeder hat zwar nur ein Elternpaar, da es aber für jeden eine unterschiedliche Anzahl Kinder gibt, muß ich das über ein Subformular erledigen.
Gruß,
eve
Tabelle 1: Personen
PersonenID -- Name -- ElternID
1 -- Hans Meier -- 1
2 -- Paul Meier -- 1
3 -- Johann Meier -- 2
4 -- Lieschen Müller -- 3
5 -- Ernst Müller --
6 -- Elisabeth Bauer --
Tabelle 2: Familie
FamilienID -- VaterID -- MutterID
1 -- 3 -- 4
2 -- --
3 -- 5 -- 6
Die ElternID in Tabelle 1 (bzw. FamilienID in Tabelle 2) dient dazu, jeder Person die Vater-Mutter-Kombination aus Tabelle 2 zuzuordnen.
Das Formular, das ich jetzt erstellen möchte soll im Hauptteil nun zu jeder gewünschten Person die Personendaten aus Tabelle 1 ausgeben (da kommt dann im Laufe der Zeit noch Geburtsdatum, etc. dazu). Im Subformular sollen die Namen der Eltern angegeben werden.
Das Subformular soll jetzt also die FamilienID (bzw. ElternID) aus dem Hauptformular übernehmen und mit dieser ID (die ja auch Bestandteil der Tabelle 2 ist) dann die Elternnamen ausgeben. Die Namensausgabe funktioniert ja jetzt. Aber woher weiß das Subformular für welche FamilienID es die Daten (bzw. Namen) ausgeben soll?
Die Ausgabe soll also in etwa so sein:
PersonenID-- Name -- Vater -- Mutter
1 -- Hans Meier -- Johann Meier -- Lieschen Müller
2 -- Paul Meier -- Johann Meier -- Lieschen Müller
3 -- Johann Meier -- --
4 -- Lieschen Müller -- Ernst Müller -- Elisabeth Bauer
Ich habe vor auf die selbe Weise auch noch die Kinder zu suchen und auszugeben. Ich nehme an die SQL-Abfrage ist im Prinzip genauso aufgebaut, wie die Suche nach den Eltern. Jeder hat zwar nur ein Elternpaar, da es aber für jeden eine unterschiedliche Anzahl Kinder gibt, muß ich das über ein Subformular erledigen.
Gruß,
eve
Re: Anzeigen von Elternnamen im Subformular
Hallo eve,
Du hast zwei Tabellen. In beiden kommt die Spalte "Name" vor. Fragst Du nun ab
stellt sich zwangsläufig die Frage, welche Spalte "Name" Du meinst. Die aus Tabelle1 oder aus Tabelle2.
Vergibst Du nun Aliase für die Tabellen, also z.B.
kannst Du über diesen Alias Bezug auf die jeweilige Tabelle nehmen. Im Beispiel bedeutet das, dass Du die "PersonenID" aus Tabelle2 und die Spalte "Name" aus Tabelle1 abfragen willst. Verstanden?
Und nun zu Deiner Abfrage. Du musst (bzw. kannst) sie ganz ähnlich wie die bereits von Dir genutzte aufbauen. Passe ggf. die Spaltenbezeichner an:
Gruß Barlee
Einfaches Beispiel:Was ist da mit "über a kann man dann auf Personen referenzieren" gemeint?
Du hast zwei Tabellen. In beiden kommt die Spalte "Name" vor. Fragst Du nun ab
Code: Alles auswählen
SELECT PersonenID, Name FROM Tabelle1, Tabelle2 WHERE ...
Vergibst Du nun Aliase für die Tabellen, also z.B.
Code: Alles auswählen
SELECT b.PersonenID, a.Name FROM Tabelle1 a, Tabelle2 b WHERE ...
Und nun zu Deiner Abfrage. Du musst (bzw. kannst) sie ganz ähnlich wie die bereits von Dir genutzte aufbauen. Passe ggf. die Spaltenbezeichner an:
Code: Alles auswählen
SELECT
"a"."Name" AS "Name",
(SELECT "Name" FROM "Personen" WHERE "PersonenID" = "d"."VaterID") as "Vater",
(SELECT "Name" FROM "Personen" WHERE "PersonenID" = "d"."MutterID") as "Mutter"
FROM "Personen" "a", "Familie" "d"
WHERE "a"."FamilienID" = "d"."FamilienID"
Re: Anzeigen von Elternnamen im Subformular
Hallo Barlee,
Das Formular funktioniert übrigens einwandfrei. Vielen Dank für die ausführliche Hilfe! (dicker Blumenstrauß
)
Gruß eve
Ich denke schon, aber wo wird definiert, welche Tabelle welchen Alias bekommt? Die erste Abfrage hatte nämlich erst funktioniert, als ich statt „FROM Familie b“ nur „FROM b“ geschrieben habe.Vergibst Du nun Aliase für die Tabellen, … kannst Du über diesen Alias Bezug auf die jeweilige Tabelle nehmen. Im Beispiel bedeutet das, dass Du die "PersonenID" aus Tabelle2 und die Spalte "Name" aus Tabelle1 abfragen willst. Verstanden?
Das Formular funktioniert übrigens einwandfrei. Vielen Dank für die ausführliche Hilfe! (dicker Blumenstrauß

Gruß eve
Re: Anzeigen von Elternnamen im Subformular
Hallo eve,
gern geschehen!
In diesem Beispiel bedeutet "Tabelle1 a", dass Du für die Tabelle mit dem Namen "Tabelle1" den Alias "a" vergibst. Für "Tabelle2" vergibst Du "b".
Gruß Barlee
gern geschehen!
Das definierst Du selbst:aber wo wird definiert, welche Tabelle welchen Alias bekommt?
Code: Alles auswählen
SELECT b.PersonenID, a.Name FROM Tabelle1 a, Tabelle2 b WHERE ...
Das hat damit zu tun, dass Du ja Deine Tabellennamen geändert hattest. Du hast ja selbst geschrieben:Die erste Abfrage hatte nämlich erst funktioniert, als ich statt „FROM Familie b“ nur „FROM b“ geschrieben habe.
"FROM Familie b" konnte nicht mehr funktionieren, weil es die Tabelle mit dem Namen "Familie" nicht mehr gab.Ich habe sogar meine Tabellen in a und b umbenannt
Gruß Barlee
Re: Anzeigen von Elternnamen im Subformular
Hallo Barlee,
Jetzt ist soweit alles klar.
Ich habe mittlerweile auch herausgefunden warum der ursprüngliche Code eine Fehlermeldung gebracht hatte. In der Zeile
fehlte das Komma nach "b. MutterID". Bei meiner Änderung der Tabellenamen habe ich das dann unbewußt im Code wieder eingefügt, daher hat es dann funktioniert. Jetzt geht es auch mit den ursprünglichen Namen. Ich denke ich werde in nächster Zeit noch ziemlich damit beschäftigt sein mich etwas mehr in SQL einzuarbeiten.
Gruß eve
Jetzt ist soweit alles klar.
Ich habe mittlerweile auch herausgefunden warum der ursprüngliche Code eine Fehlermeldung gebracht hatte. In der Zeile
Code: Alles auswählen
b.MutterID
(SELECT a.Name FROM Personen a WHERE a.PersonenID = b.MutterID) as Name_Mutter
Gruß eve