Variable Anzahl Eingabefeld

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Variable Anzahl Eingabefeld

Beitrag von Alex2k3 »

Hallo,

möchte wegen meiner Rezeptdatenbank ein Formular erstellen, dass es mir erlaubt, so viele Zutaten einzugeben, wie ich benötige. Und zwar so, dass, wenn ich eine Zutat hinzufügen möchte, pro Zutat ein Feld erscheint. Also wenn ich z.B. 1kg Mehl eingegeben habe und möchte jetzt Hefe eingeben, aber eben nicht durch ein "," getrennt, sondern in einem anderen (nächsten) Feld.
Gut wäre es auch, dass ich dann im Bericht die Zutaten untereinander stehen habe.
Muss ich dann auch in meiner Tabelle die Spalte "Zutaten" variabel anlegen?

Danke und Gruß

Alexander
Shining1977
*
Beiträge: 17
Registriert: Do, 07.12.2006 14:32
Wohnort: Dortmund

Beitrag von Shining1977 »

Was Du meinst, hat doch eher mit Datenbankdesign an sich zu tun, oder?

*verwirrt*
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Kann sein, bin mir jetzt nicht ganz sicher.
Das Endprodukt bestimmt, jedoch kenne ich nicht den Weg um dorthin zu kommen.
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alexander,

na ja, lösbar ist das, aber du musst Ahnung haben!
Du brauchst mindestens zwei Datentabellen. In der ersten werden die Rezepte an sich verwaltet, die zweite nimmt alle deine "Zubehöre" auf. Über einen Schlüssel kannst du die dann dem Rezept zuordnen.
Im formualr hast du die Rezeptdatenbank als Hauptformular, die "Zubehör"-Datenbank als Unterformular. Wenn du für das Unterformular eine Tabellendarstellung wählst und als Filterschlüssel die Rezept-ID, so werden Dir nur die zum Rezept gehörigen Daten angezeigt. Die Tabelle kannst du jederzeit "nach unten" erweitern, sprich neue Datensätze hinzufügen.
Das sollte ungefähr dein Problem erschliessen.
Nur: Arbeitest du zum ersten Mal mit Datenbanken, so waren jetzt viele "böhmsche Dörfer" in meinem Text, aber das ist die Problematik ;-)

Viele Grüße
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Hallo Toxitom,

mit Base arbeite ich zum Ersten mal, mit Access habe ich eine Mitgliederdatenbank erstellt, allerdings ohne viel Verknüpfungen.

Prinzipiell verstehe ich deine Antwort und kann ihr auch logisch folgen.
Ich brauche eine Tabelle, die in meiner Sache folgende Felder hat:

Nr
Rezeptname
Zutaten
...
...
...

Jetzt brauche ich noch eine weitere Tabelle in der ich irgendwie die Zutaten hineinbekomme und gleichzeitig mit der Nr verknüpfe, damit ich die Zutaten später wieder richtig zuordnen kann, oder?

Und genau da hakts jetzt bei mir. Wie kann ich festlegen, dass die Nr, die automatisch eingetragen wird, automatisch in beide Tabellen geschrieben wird und dass ich dann im Formular die Tabelle "nach unten" erweitern kann?

Vielen Dank

Alexander
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alexander,

nein. Du brauchst eine Tabelle, die ist so aufgebaut:

ID
Rezeptname
und vielleicht noch ein paar weitere Infos, die nur für das Rezept gelten, aber keine Zutaten

eine Zweite Tabelle, die so aussieht:
id
Rezept-ID
Zutat
Menge
...

In der ersten Tabelle gibt es nun den folgenden datensatz:
2 | Mein Riesenkuchen | ...

In der zweiten Tabelle steht nun zum Beispiel:
5 | 2 | Mehl Typ 405 | 4 Kg | ....

Die ID der ersten Tabelle (hier "2") dient in der zweiten Tabelle als F"Fremdschlüssel" und weist die Zutat genau diesem Rezept zu. Nun können in der Tabelle 2 beliebig viele Einzelzutaten stehen, über den Schlüsssel werden sie immer nur einem Rezept zugewiesen (1:n Beziehung).

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Hallo Toxitom,

ich habe meine Tabellen erstellt und wollte eine Beziehung hinzufügen. Dazu ging ich nach "Beziehungen" unter Extras und zog einfach meine Nr aus der Rezepttabelle (Primärschlüssel) mit der Maus auf Nr in der Zutatentabelle (kein Primärschlüssel). Dabei bekomme ich immer folgenden Fehler angezeigt:

Column types do not match in statement [ALTER TABLE "Zutaten" ADD FOREIGN KEY ("Nr") PREFERENCES "Rezepte" ("Nr")]

Was mache ich falsch?

Gruß

Alexander
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alexander,

na,das was in der Fehlermeldung steht: Offensichtlich isind die Feldtypen unterschiedlich - dann kann es nicht gehen.
Prüfe den Feldtyp der ersten Tabelle ("Nr") - ist vermutlich ein Integer Typ?
Prüfe den Feldtyp der zweiten Tabelle ("Nr") - der muss dann auch Integer sein!

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Hi Toxitom,

ok, ich dummerchen.
Aber jetzt gleich die Anschlussfrage:
Wollte eben den Feldtyp ändern, geht aber nur durch löschen. Oder?

Gruß

Alexander
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Und wie mache ich das jetzt bei dem Formular, dass automatisch bei den Zutaten die Spalten variabel sind?
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alexander,
Wollte eben den Feldtyp ändern, geht aber nur durch löschen. Oder?
Ansich nicht, die Spalte dar jedoch weder indiziert sein noch als Primärschlüssel dienen. Sonst geht das nicht.
Im übrigen können aber die Daten verloren gehen, wenn du den Typ umstellst - also, wenn bsp schon Texte drin sind und du willst auf Zahlen umstellen, geht es entweder nicht oder die Inhalte sind weg.
Wollte eben den Feldtyp ändern, geht aber nur durch löschen. Oder?
Nein, nicht Spalten! Es sind ja jetzt "Zeilen". Für jede Zutat steht eine Zeile - ein Datensatz der zweiten Tabelle. Da nimmst du einfach die Tabellenansicht als Formularfeld (für das Subformular). Das ist flexibel für neue Zeilen - und dann scrollbar, falls nicht alle Zeilen in die Ansicht passen.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Hallo Toxitom,

Die Spalte in der ich den Feldtyp ändern wollte dient weder als Primärschlüssel noch habe ich sie, absichtlich, indiziert. Wüsste also nicht, warum sie indiziert sein sollte.

Verstehe ich dich richtig:
Ich soll einfach aus meiner Tabelle "Zutaten" eine Ansicht erstellen mit allen Feldern wie in der Tabelle und diese Ansicht zu einem FOrmular machen. Dann dieses Formular als Subformular für meine REezepte verwenden.

Gruß

Alexander
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alexander,
Ich soll einfach aus meiner Tabelle "Zutaten" eine Ansicht erstellen mit allen Feldern wie in der Tabelle und diese Ansicht zu einem FOrmular machen. Dann dieses Formular als Subformular für meine REezepte verwenden.
Nein, wozu und weswegen eine Ansicht? Lass doch beide Tabellen wie sie sind. Dann erstelle ein formular uaf der Basis der Rezepttabelle. Die felder zeigen dir dann immer nur ein Rezept an.
Diesem Formular gibst du ein Unterformular mit, das auf die zweite Tabelle verweist. Dabei dient dein Schlüssel als Auswahlkriterieum. Es werden dann also nur die Datensätze angezeigt, die zum Hauptdatensatz passen, also deine Zutaten für dein Rezept. Wähle ein Tabellen-Darstellung für das Subformular und du hast immer so viele Zeilen, wie das Rezept Zutaten hat.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Alex2k3
*
Beiträge: 17
Registriert: Di, 19.12.2006 11:42
Wohnort: Haßloch
Kontaktdaten:

Beitrag von Alex2k3 »

Hallo Toxitom,

und wie mache ich das mit der Eingabe der Rezepte?

Gruß

Alexander
Toxitom
********
Beiträge: 3769
Registriert: Di, 12.08.2003 18:07
Wohnort: Wiesbaden
Kontaktdaten:

Beitrag von Toxitom »

Hey Alex,
wie mache ich das mit der Eingabe der Rezepte?
:?: :?:
Sorry, verstehe die Frage nicht.

Gruss
Thomas
Unterstützer LibreOffice, zertifizierter Trainer und Berater
Bücher: LibreOffice 6- Einstieg und Umstieg
Makros Grundlagen - LibreOffice / OpenOffice Basic
Antworten