Mehrfachinhalt in einer Tabellenspalte

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Mehrfachinhalt in einer Tabellenspalte

Beitrag von RobertG »

Hallo MI,
Gast hat geschrieben: In den Spalten "Komponisten" und "Fundorte" können natürlich mehrere Werte passen (die ich in Excel einfach mit Komma separiert hatte). Gibt es eine Möglichkeit, dies in Base zu realisieren (so dass ich z.B. mir später alle Noten eines bestimmten Fundortes ausdrucken lassen kann)?
Du brauchst dazu mehr als eine Tabelle. Da Du ohne weiteres mehrere Komponisten für ein Stück hast, aber auch mehrere Stücke, denen Du einen Komponisten zuordnest, ist dies eine typische n:m-Beziehung. Schau vielleicht dazu einmal im Handbuch im Kapitel Tabellen nach: https://wiki.documentfoundation.org/ima ... en_V41.pdf. Damit Du das vernünftig bedienen kannst musst Du auch das Formular entsprechend anpassen. Bevor Du also alle einzelnen Kapitel runterlädst, hier der Gesamtlink: https://wiki.documentfoundation.org/ima ... ig_V41.pdf.

Vom Prinzip brauchst die Tabelle Noten, die Tabelle Komponist und eine Tabelle rel_Noten_Komponist. In der Tabelle "Komponist" werden alle Komponisten eingetragen. In der Tabelle "Noten" erscheint keine Spalte für die Komponisten. In der Tabelle "rel_Noten_Komponist" erscheinen die Primärschlüssel von "Noten" und "Komponist" gemeinsam als Schlüsselfelder. Damit ordnest Du dann Komponisten Noten zu - ohne weiteres auch mehrere.

Gruß

Robert
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Mehrfachinhalt in einer Tabellenspalte

Beitrag von pmoegenb »

Hallo MI,
ich habe da Verständnisprobleme.
Gast hat geschrieben: In den Spalten "Komponisten" und "Fundorte" können natürlich mehrere Werte passen (die ich in Excel einfach mit Komma separiert hatte). Gibt es eine Möglichkeit, dies in Base zu realisieren (so dass ich z.B. mir später alle Noten eines bestimmten Fundortes ausdrucken lassen kann)?
Dass eine Spalte unterschiedliche Werte aufweist ist Normalität, oder meinst damit einen Zelle ?

Gibt es das tatsächlich, dass ein Musikstück mehrere Komponisten hat und dass man für einen Notensatz mehrere Fundorte hat ?

Eine Datenbank ist wie ein Tabellendokument aufgebaut und hat ebenfalls Zeilen (Rows) und Spalten (Columns), wobei eine Zeile einem Datensatz entspricht. Während Du im Tabellendokument in eine Zelle beliebige Werte eingeben kannst, werden in einer Datenbank-Tabelle vorher die Feldtypen (z. B. nummerisch, alphanumerisch etc.) definiert.

Weitergehende Informationen erhältst Du aus dem Gesamtband - Handbuch für Base- von Robert Grosskopf. Darin ist auch wie beschrieben, wie Du Dein Tabellendokument als Datenquelle belassen kannst und wie per Datenbankobjekt Verbindung zu diesem Tabellendokument hergestellt werden kann.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
pmoegenb
********
Beiträge: 4330
Registriert: Di, 22.06.2004 12:02
Wohnort: 71134 Aidlingen
Kontaktdaten:

Re: Mehrfachinhalt in einer Tabellenspalte

Beitrag von pmoegenb »

Ups Robert, da war ich offensichtlich etwas zu langsam mit dem absenden.
Gruß

Peter
---------------------------------------------------------------------------
Windows 7 Prof. 64-bit SP1, LibreOffice 4.3.6.2 und AOO 4.1.1
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Mehrfachinhalt in einer Tabellenspalte

Beitrag von RobertG »

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
RobertG
********
Beiträge: 2068
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Mehrfachinhalt in einer Tabellenspalte

Beitrag von RobertG »

Hallo Mi,

auch für die Listenfelder gibt es verschiedene Lösungsmöglichkeiten. Du kannst natürlich neben Deinem Hauptformular auch weitere Formulare erstellen und in diesen Tabellenkontrollfelder für die Tabellen, die Du beschicken willst. Dann gibst Du da neue Werte ein und lässt anschließend das Listenfeld aktualisieren (ist ein Button auf der Navigationsleiste).
Im Handbuch und den dazugehörigen Beispieldatenbanken befindet sich auch die Beschreibung und Anwendung eines Makros dazu. Dann werden statt des Listenfeldes ein Kombinationsfeld und ein Nummernfeld aufgezogen. Das Nummernfeld wird unsichtbar geschaltet. Per Makro wird dann zu der Nummer der Inhalt im Kombinationsfeld dargestellt. Neu geschriebener Inhalt wird abgespeichert.

Natürlich kannst Du zu einem Formular beliebig viele Unterformulare erstellen - das gibt Dann in Deinem Fall beliebig viele Tabellenkontrollfelder mit Mehrfachauswahl. Nur bietet der Assistent erst einmal nur ein Unterformular an. Die anderen musst Du dann mit Hilfe des Navigators erstellen - siehe Handbuch.

Gruß

Robert
Antworten