Seite 1 von 2
Variable Anzahl Eingabefeld
Verfasst: Mi, 20.12.2006 10:42
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
Verfasst: Mi, 20.12.2006 16:01
von Shining1977
Was Du meinst, hat doch eher mit Datenbankdesign an sich zu tun, oder?
*verwirrt*
Verfasst: Mi, 20.12.2006 17:39
von Alex2k3
Kann sein, bin mir jetzt nicht ganz sicher.
Das Endprodukt bestimmt, jedoch kenne ich nicht den Weg um dorthin zu kommen.
Verfasst: Mi, 20.12.2006 18:21
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
Verfasst: Mi, 20.12.2006 19:18
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
Verfasst: Mi, 20.12.2006 20:03
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
Verfasst: Do, 21.12.2006 08:53
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
Verfasst: Do, 21.12.2006 13:36
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
Verfasst: Do, 21.12.2006 16:21
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
Verfasst: Do, 21.12.2006 16:30
von Alex2k3
Und wie mache ich das jetzt bei dem Formular, dass automatisch bei den Zutaten die Spalten variabel sind?
Verfasst: Do, 21.12.2006 17:20
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
Verfasst: Do, 21.12.2006 17:58
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
Verfasst: Do, 21.12.2006 20:06
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
Verfasst: Fr, 22.12.2006 08:53
von Alex2k3
Hallo Toxitom,
und wie mache ich das mit der Eingabe der Rezepte?
Gruß
Alexander
Verfasst: Fr, 22.12.2006 09:04
von Toxitom
Hey Alex,
wie mache ich das mit der Eingabe der Rezepte?
Sorry, verstehe die Frage nicht.
Gruss
Thomas