collapse

* Benutzer Info

 
 
Willkommen Gast. Bitte einloggen oder registrieren. Haben Sie Ihre Aktivierungs E-Mail übersehen?

* Wer ist Online

  • Punkt Gäste: 56
  • Punkt Versteckte: 2
  • Punkt Mitglieder: 8
  • Punkt Benutzer Online:

* Forenstatistik

  • stats Mitglieder insgesamt: 13804
  • stats Beiträge insgesamt: 63513
  • stats Themen insgesamt: 8607
  • stats Kategorien insgesamt: 5
  • stats Boards insgesamt: 16
  • stats Am meisten online: 415

Autor Thema: Bestimmten Wert in anderen Tabellen suchen  (Gelesen 157 mal)

Offline Dimivo

  • Newbie
  • Beiträge: 9
Bestimmten Wert in anderen Tabellen suchen
« am: Dezember 05, 2017, 21:42:11 »
Hallo zusammen

Ich bin neu im Thema Access, arbeite mich aber langsam in diese Thematik ein (soweit ich das aus meinem Standpunkt her beurteilen kann). Ich erstelle zur Zeit eine Rezeptedatenbank mit einem erweiterten Funkionsumfang. Dies bedeutet, dass ich nebst den Zutaten und Rezeptverwaltung auch die Nährwerte ermitteln möchte. Später sollen noch viele weitere Funktionen hinzukommen.

Ich habe eine Tabelle für Zutaten (tblZuatten) inkl. Nährwerte für je 100 gramm, wie die Angaben halt auch auf der Packung sind.
Bei den Rezepten (tblRezepte) kann ich jedoch die Mengen auch mit anderen Messgrössen angeben, z.B. Stück, Esslöffel usw.
Hierfür habe ich mir eine weitere Tabelle gebastelt, in welcher ich die Fremdschlüssel von (tblZutaten), (tblRezepte) sowie (tblEinheiten) mit einem weiteren Zahlenfeld für die effektive Menge eingeben kann. Soweit funktioniert dies auch. Erstelle ich eine Abfrage, dann berechnet es mir für jede Zutat im Rezept die Nährwerte, allerdings nicht bassierend auf die Einheit Gramm. Das bedeutet, dass eine Messerspitze Zucker gleich viel Kcal hat wie ein kg.

Ich habe also in einem weiteren Schritt eine Tabelle (tblMessgroessen) gemacht, in welcher ich für die Zutaten andere Messgrössen hinterlegen kann. Z.B. 1 Teelöffel Zucker = 10 Gramm, 1 Esslöffel Zucker = 30 Gramm usw.

Nun muss ich in der Abfrage von vorhin zuerst mall die Messgrösse Abfragen bevor ich eine Berechnung des effektiven Nährwert machen kann. Das heisst, wenn ich im Rezept 1 Teelöffel Zucker ausgewählt habe, dann muss in der Abfrage 10 Gramm auftauchen. Basierend hierauf kann ich dann die effektiven Nährtwerte einfach berechnen.

Zu meiner Frage: Wie erstellt man eine solche Abfrage? Gibt es eine Funktion hierfür? Das aktuelle Resultat lässt sich in (qryRezepteZutatenNährwerte) gut erkennen.

Danke für eure wertvollen Inputs.

Es grüsst
Michael
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #1 am: Dezember 05, 2017, 23:15:33 »
Hallo,
die Tabelle tblMessgroessen halte ich für überflüssig. Da die Nährwertangaben immer auf 100 g bezogen sind, würde ich in der tblEinheiten ein Feld für einen Faktor einfügen der immer auf 100g hochrechnet.
Bei Esslöffel Faktor 3,33 (30*3,33=100)
Bei Teelöffel Faktor 10
Bei Kg Faktor 0,1
usw.
Außerdem gehört der Fremdschlüssel zur Einheit direkt in die Tabelle mit den Zutaten.
Das wird dann alles viel einfacher zu berechnen.

Deine Beispieldb kann ich mir erste später ansehen, ich muss erst den PC wechseln, hier habe ich im Moment kein Access.

Nachtrag:
Ich ziehe meinen Vorschlag zurück, denn ein Stück Eier hat ja einen anderen Faktor als z.B. ein Stück Apfel für einen Bezug auf 100g.
Ich habe mir die DB angesehen. In die Tabelle "tblMessgroessen" würde ich den Faktor aufnehmen statt der Mengenangabe, das Rechnen wird einfacher.
Dann würde ich den Fremdschlüssel zur Einheit in die Tabelle Zutat aufnehmen, es sei denn Du hast Zutaten in verschiedenen Einheiten.
Also Mehl mal in g und ein anders mal in Kg.
Das kann ich nicht beurteilen, würde das aber vereinheitlichen. Wenn die Einheit in der Zutat ist, kriegst Du bei Auswahl der Zutat gleich automatisch auch die Einheit angezeigt.
In die Abfrage nimmst Du die Tabellen mit der Messgröße auch mit auf und hast dann den Faktor zur Berechnung zur Verfügung.
« Letzte Änderung: Dezember 05, 2017, 23:42:49 von MzKlMu »
Gruß
Klaus
 
Folgende Mitglieder bedankten sich: Dimivo

Offline Dimivo

  • Newbie
  • Beiträge: 9
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #2 am: Dezember 06, 2017, 15:38:48 »
Hallo Klaus

Danke für deinen Input. Ich habe diese durchstudiert und erachte diese als machbar. Diese Idee würde mich allerdings wegführen von der Einfachheit bei der Bedienung. Diese Datenbank kann durch verschiedene Familienmitglieder verwendet werden und sollte daher so intuitiv wie möglich sein.
Einen Faktor anstatt einer Messgrösse zu verwenden wäre eine Option, schafft allerdings eine grosse Fehlerquelle bei der Eingabe, da dieser Faktor von Hand berechnet werden müsste. In der Abfrage mit dem Faktor zu berechnen erachte ich nicht als einfacher, da ich aktuell folgende Formel in der qry habe: kcal: [zutKCAL]/100*[zrMenge].
Wenn [zrMenge] stets ein Grammwert wäre, so könnte ich die Formel so stehen lassen.
Hierfür muss ich aber irgendwie nachschlagen können, welcher Wert hier stehen müsste. Z.B. Wenn die Einheit Stück ist, dann kommen hier 150 Gramm rein, wenn die Einheit Esslöffel wäre, nur 20 Gramm. Ich sehe hier einen Bezug zwischen Messeinheit sowie Zutat selber, weiss aber nicht wie ich das im Access genau abbilden kann. Einen Input, welcher ich selber weiterverfolgen kann, würde mir sehr weiter helfen.

Kurz noch ein paar Randbemerkungen: Ob 1 EL Zucker oder Mehl macht Gewichtsmässig nicht viel aus und ist eigentlich irrelevant. Allerdings ist der Gewichtsunterschied zwischen 1 Stk. Ei oder Ananas sehr gross. Aus diesem Grund macht es Sinn, dies ein wenig gesondert abzubilden.
Als weiteres ist ein Bund Wasser oder ein Stück Salz unsinnig, da diese Kombinationen in Rezepten nicht vorkommen. Schlussendlich können in den Rezepten je nach Zutat unterschiedliche Einheiten verwendet werden. Mal macht Stück Sinn, an andere Orten Gramm usw.

Es grüsst
Michael
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #3 am: Dezember 06, 2017, 17:19:55 »
Hallo,
das mit der Einheit in die Zutat war ja nur ein Vorschlag, ebenso der Faktor.
Du kannst das natürlich so lassen. Die Messgrößetabelle nimmst Du einfach in die Abfrage mit auf. Die Formel sieht dann so aus:
kcal: [zutKCAL]/100*[zrMenge]*[mesMenge]Da muss nix extra in der anderen Tabelle nachgesehen werden. Die richtige Messgröße ergibt sich ja eindeutig über die Beziehuneg.
Das heißt aber auch, zu jeder Kombination Einheit-Zutat in der Messgrößentabelle muss es einen Datensatz geben, sonst wird die Zutat nicht angezeigt bzw. in der Abfrage verwendet (wegen des INNER JOIN).
Das Feld zutMessgroesse in der Tabelle mit den Zutaten ist nicht notwendig.


Und noch ein dringender Rat (hatte ich gestern vergessen), entferne die Nachschlagefelder in den Tabellen. Die sind ein großes Übel und machen im weiteren Verlauf nur Probleme. Siehe hierzu:
http://dbwiki.net/wiki/Access_Anf%C3%A4nger:_Die_Nachteile_von_Nachschlagefeldern
Lösche sie raus, es ist besser.
In Formularen kannst Du diese verwenden, aber eben nur in Formularen.
Und auch das Anlagefeld solltest Du Dir überlegen. Diese blähen die Datenbank sehr auf und die kommt schneller an ihre Grenzen.
Besser ist es ein normales Textfeld zu verwenden und nur den Bildpfad als Text zu speichern. Das Bild dann mit einem normalen Bildbetrachter aus dem Formular aufrufen.

Im Anhang noch ein Bild von der Abfrage.

« Letzte Änderung: Dezember 06, 2017, 17:38:47 von MzKlMu »
Gruß
Klaus
 

Offline Dimivo

  • Newbie
  • Beiträge: 9
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #4 am: Dezember 06, 2017, 22:40:54 »
Hallo Klaus

Zuerst danke für deine Tipps bezüglich Nachschlagefelder und Anlagefelder. Ich habe beide aus meiner Tabelle entfernt und sie funktioniert immer noch wie sie sollte.

Deinen Input bezüglich Messgrössentabelle habe ich umgesetzt und auf den ersten Blick funktioniert dies. Allerdings habe ich da ein konzeptionelles Problem mit meinem Aufbau.
Ich habe 3 Rezepte mit Lachs, bei einem 1 Stk., bei den anderen 100 und 175 Gramm. Damit Access weiss, wie schwer 1 Stk. ist, habe ich dies in der Messgrössentabelle mit 125 Gramm angegeben.
Nun geht Access in der Abfrage hin und macht daraus 125, 12500 und 21875 Gramm.

Ursprünglich war meine Idee, dass Access hingeht und prüft, welche Einheit ich im Rezept verwendet habe. Ist diese Gramm dann ist alles gut, ist es aber was anderes, dann muss die Gewichtsangabe aus der Messgrössentabelle verwendet werden.

Ich versuche morgen das Unterformular bzw. die Abfrage für die Zutateneingabe so abzuändern, dass eigentlich nur gültige Kombinationen ausgewählt werden könne. Aktuell ist ein Bund Wasser wählbar. Ich erhoffe mir davon auch, dass obiges Problem nicht mehr auftaucht.

Gruss
Michael
 

Offline MzKlMu

  • Moderator
  • Access-Oberguru
  • *****
  • Beiträge: 6940
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #5 am: Dezember 06, 2017, 22:55:37 »
Hallo,
nur sicherheitshalber der Hinweis: Nachschlagefelder aus allen Tabellen entfernen, nicht nur aus der einen.

Ich tue mir im Moment schwer, das mit den Messgrößen zu überdenken.
Wenn das nicht klappt, erstelle mal ein Rezept mit wenigen Zutaten und unterschiedlichen Einheiten. Und diese Beispiel lädst Du noch mal hoch.
Gruß
Klaus
 

Offline Dimivo

  • Newbie
  • Beiträge: 9
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #6 am: Dezember 09, 2017, 15:38:10 »
Hallo Klaus

Ich sitze gerade wieder an meiner DB und habe eine Idee, wie ich die Problematik der verschiedenen Messgrössen je nach Zutat auf die Reihe bringe:

Ich definiere in einer weiteren Tabelle pro Zutat zusätzlich noch die Menge wie Einheit. Das bedeutet z.B. für den Lachs kann ich die Einheit Gramm mit der Menge 1 oder Stück mit der Menge 125 definieren: [medID] [zutatID] [menge] [einheitID].
Nun möchte ich bei der Rezepteingabe die Zutaten auswählen können, eine Menge und die Einheit. Wenn ich z.B. Lachs 1 Stück wähle, so wird automatisch mit 125 Gramm gerechnet.

Aktuell ist es so, dass bei der Rezepteingabe in der Zutatenauswahlliste 2x Lachs auftaucht, einmal mit Stück und einmal mit Gramm. Schön wäre, wenn ich zuerst die Zutat selber auswählen kann und danach die Einheit einstelle, wobei beim Lachs nur noch 2 angezeigt würden.

Ich scheitere im Moment gedanklich daran, wie ich diese DB strukturieren muss, dass diese Idee so umgesetzt werden kann. Kannst mir jemand kurz aufzeigen, wie diese Struktur aussehen müsste? Umsetzen werde ich diese natürlich selber, es geht mit vor allem zuerst einmal um den Weg.

Danke & Gruss
Michael
« Letzte Änderung: Dezember 10, 2017, 10:58:00 von Dimivo »
 

Offline Dimivo

  • Newbie
  • Beiträge: 9
Re: Bestimmten Wert in anderen Tabellen suchen
« Antwort #7 am: Dezember 10, 2017, 10:59:19 »
Hallo

Ich habe gestern Nacht das Problem lösen können, danke für eure Hilfe.

Gruss
Michael