von RobertG » So, 11.08.2013 20:28
Hallo Mi,
ich nehme an, dass "Noten" die Grundtabelle sein soll. Für alle anderen Tabellen, die dazu eine 1:n-Beziehung haben, muss in der Tabelle "Noten" ein Fremdschlüsselfeld liegen. Dies dürfte z.B. für "Ort" zutreffen.
Noten (ID, Titel, Besetzung, OrtID)
Damit würde im Formular ein Feld für den Ort erscheinen. Das Feld hat allerdings nur den Primärschlüsselwert von Ort. Da Du lieber den "Ort" selbst sehen willst, musst Du hieraus ein Listenfeld machen. Grundlage für das Listenfeld ist SQL, die Abfrage dafür lautet
SELECT "Ort", "ID" FROM "Ort" ORDER BY "Ort" ASC
Grundsatz: Alle Tabellen, die mit der Tabelle Noten im Verhältnis 1:n verbunden sind, können durch ein Listenfeld im Formular direkt dargestellt werden. Es ist auch möglich, diese Daten über eine Kombination von Hauptformular und Unterformular weiter zu geben.
Du möchtest ja gleich mehrere Komponisten zu einem Datensatz aus "Noten" abspeichern können. Das ist eine n:m-Verbindung. Dazu brauchst Du also die rel_Noten_Komponist - Tabelle
rel_Noten_Komponist(Noten_ID, Komponist_ID)
Mehr Spalten enthält diese Tabelle nicht. Beide Spalten sind zusammen Primärschlüssel.
Die Tabelle "rel_Noten_Komponist" gehört ins Unterformular von der Tabelle "Noten". Wenn Du bei Extras → Beziehungen die entsprechenden Verbindungen gemacht hast, dann schlägt der Assistent so etwas auch vor. Das Unterformular besteht dann aus einem Tabellenkontrollfeld, das nur ein Feld beschicken muss: "Komponist_ID". Da Du auch hier nicht die Nummern eintragen willst muss wieder ein Listenfeld daraus gemacht werden. Wie oben in SQL, jetzt aber zur Darstellung von Nachname und Vorname im Feld:
SELECT "Nachname"||', '||"Vorname", "ID" FROM "Komponist" ORDER BY "Nachname"||', '||"Vorname" ASC
Jetzt kannst Du zu jedem Datensatz aus "Noten" beliebig viele Komponisten auswählen.
Listenfelder haben allerdings ein Problem, das Du lösen musst (siehe dazu auch das Handbuch): Listenfelder sind nicht beschreibbar. Du musst also zuerst die Datensätze für die Orte, Komponisten usw. haben, bevor Du in "Noten" etwas eintragen kannst. Es wird also am Anfang häufiger vorkommen, dass Du Neueingaben in die Tabellen "Ort" und "Komponist" machen musst, bevor es mit "Noten" weiter geht.
Wenn Du an einem Punkt nicht klar kommst kannst Du auch gerne die DB hier hoch laden. Zum Verständnis der Zusammenhänge ist es aber günstiger, sich da Schritt für Schritt selbst durch zu wühlen - solange Du dafür Zeit aufbringen kannst und willst.
Gruß
Robert
Hallo Mi,
ich nehme an, dass "Noten" die Grundtabelle sein soll. Für alle anderen Tabellen, die dazu eine 1:n-Beziehung haben, muss in der Tabelle "Noten" ein Fremdschlüsselfeld liegen. Dies dürfte z.B. für "Ort" zutreffen.
Noten (ID, Titel, Besetzung, OrtID)
Damit würde im Formular ein Feld für den Ort erscheinen. Das Feld hat allerdings nur den Primärschlüsselwert von Ort. Da Du lieber den "Ort" selbst sehen willst, musst Du hieraus ein Listenfeld machen. Grundlage für das Listenfeld ist SQL, die Abfrage dafür lautet
SELECT "Ort", "ID" FROM "Ort" ORDER BY "Ort" ASC
Grundsatz: Alle Tabellen, die mit der Tabelle Noten im Verhältnis 1:n verbunden sind, können durch ein Listenfeld im Formular direkt dargestellt werden. Es ist auch möglich, diese Daten über eine Kombination von Hauptformular und Unterformular weiter zu geben.
Du möchtest ja gleich mehrere Komponisten zu einem Datensatz aus "Noten" abspeichern können. Das ist eine n:m-Verbindung. Dazu brauchst Du also die rel_Noten_Komponist - Tabelle
rel_Noten_Komponist(Noten_ID, Komponist_ID)
Mehr Spalten enthält diese Tabelle nicht. Beide Spalten sind zusammen Primärschlüssel.
Die Tabelle "rel_Noten_Komponist" gehört ins Unterformular von der Tabelle "Noten". Wenn Du bei Extras → Beziehungen die entsprechenden Verbindungen gemacht hast, dann schlägt der Assistent so etwas auch vor. Das Unterformular besteht dann aus einem Tabellenkontrollfeld, das nur ein Feld beschicken muss: "Komponist_ID". Da Du auch hier nicht die Nummern eintragen willst muss wieder ein Listenfeld daraus gemacht werden. Wie oben in SQL, jetzt aber zur Darstellung von Nachname und Vorname im Feld:
SELECT "Nachname"||', '||"Vorname", "ID" FROM "Komponist" ORDER BY "Nachname"||', '||"Vorname" ASC
Jetzt kannst Du zu jedem Datensatz aus "Noten" beliebig viele Komponisten auswählen.
Listenfelder haben allerdings ein Problem, das Du lösen musst (siehe dazu auch das Handbuch): Listenfelder sind nicht beschreibbar. Du musst also zuerst die Datensätze für die Orte, Komponisten usw. haben, bevor Du in "Noten" etwas eintragen kannst. Es wird also am Anfang häufiger vorkommen, dass Du Neueingaben in die Tabellen "Ort" und "Komponist" machen musst, bevor es mit "Noten" weiter geht.
Wenn Du an einem Punkt nicht klar kommst kannst Du auch gerne die DB hier hoch laden. Zum Verständnis der Zusammenhänge ist es aber günstiger, sich da Schritt für Schritt selbst durch zu wühlen - solange Du dafür Zeit aufbringen kannst und willst.
Gruß
Robert