Die wichtigste Information eines Kochrezepts ist seine Zutatenliste mit ihren Mengenangaben. Diese basiert auf verschiedenen Lebensmitteln, die bereits in der Nährwertdatenbank dieser Ausgabe vorliegen. Es liegt also nahe, diese Datenbank um einen Rezepteteil zu erweitern. Dabei kümmern wir uns hier lediglich um diese Liste und lassen die Zubereitungsanleitungen außen vor.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1609_Rezepte.accdb
Rezepttabellen
Das Datenmodell der Nährwertdatenbank hatten wir schon vorgestellt. Es enthielt bereits die Tabellen zur Rezepteverwaltung. Werfen Sie nochmals einen Blick darauf (Bild 1). Die Tabelle tblRezepte besteht aus einem Primärschlüssel ID als Autowert zur eindeutigen Identifizierung und aus der Bezeichnung des Rezepts im Feld Rezept. Portionen ist ein Long-Wert, der darüber Auskunft gibt, für wie viele Personen die Mengenangaben des Gerichts gedacht sind.
Bild 1: Das Modell der Rezepteverwaltung ist gleich wie das der Nährwertdatenbank
Die Tabelle tblRezepteZutaten stellt die Verbindung zur Nährwertetabelle her und verknüpft sie n:m. Also bezieht sich das Feld IDRezept jeweils auf einen Datensatz der Rezepttabelle und IDNahrungsmittel auf einen in tblNaehrwerte. Ist diese Verbindung für eine Zutat hergestellt, braucht es zusätzlich die zu verwendende Menge des Lebensmittels, die im gleichnamigen Feld festgehalten wird. Rufen Sie die Tabelle in der Datenblattansicht auf, so zeigt sie bereits eine sprechende übersicht über die Rezepte und deren Zutaten an (Bild 2). Obwohl es sich bei den Feldern IDRezept und IDNahrungsmittel um indizierte Zahlenwerte handelt, finden sich der Ansicht hier die zugehörigen Bezeichnungen der verwiesenen Tabellen. Das wird durch ändern der Feldeigenschaften erreicht.
Bild 2: Die Tabelle tblRezepteZutaten in Datenblattansich
Im Entwurf der Tabelle ist etwa für das Feld IDRezept der Reiter Nachschlagen aktiviert und dort unter Steuerelement anzeigen der Typ von Textfeld auf Kombinationsfeld geändert worden (siehe Bild 3). Für dessen Datensatzherkunft ist eine Abfrage als SQL-String eingetragen, die aus der Rezeptetabelle nur die beiden Felder ID und Rezept herausholt. Spaltenanzahl steht folglich auf 2, während die Gebundene Spalte die erste, also die ID, ist. Diese wird in der Datenblattansicht dann automatisch ausgeblendet.
Bild 3: Details zum Entwurf der Tabelle tblRezepteZutaten für das Feld IDRezept
ähnlich wird mit dem Feld IDNahrungsmittel verfahren, nur dass die Abfrage sich dann hier auf die Nährwertetabelle bezieht.
Für die Tabelle tblRezepte ist in ihren Eigenschaften als Unterdatenblatt eben die Tabelle tblRezepteZutaten eingetragen. Das wäre dezidiert eigentlich nicht nötig, weil die Voreinstellung (Automatisch) dies selbständig vornimmt. Es ergibt sich aus der angelegten Verknüpfung im Beziehungsfenster. öffnen Sie die Tabelle und klappen Sie ein Unterdatenblatt aus, so zeigt sich eine Ansicht, wie in Bild 4. Der Datensatz Grünkernbratlinge listet alle Zutaten auf. Eine Zutat können Sie ihrerseits ausklappen, weil für die Tabelle tblRezepteZutaten als Unterdatenblatt die Tabelle tblNaehrwerte spezifiziert ist. Damit können Sie auch gleich die Kennzahlen dieser Zutat ablesen.
Bild 4: Die Tabelle tblRezepte zur Laufzeit mit ihrem ausgeklappten Unterdatenblatt
Nun möchten Sie die Rezepte sicher nicht in Datenblättern verwalten. Anschaulicher wird das erst mit einem Formular.
Rezepteformular
Folgende Anforderungen werden an das Formular gestellt: Es soll pro Datenseite nur ein Rezept anzeigen. Zu einem Rezept soll sich über ein Auswahlkombinationsfeld navigieren lassen. Die Zutaten listen sich in einem Unterformular auf. Und alles soll editierbar sein.
Bild 5 stellt das fertige Formular zur Laufzeit dar. Hier zeigen sich noch einige Zusatzfunktionen. Der Button Mengen auf 1 Portion umrechnen ermöglicht es, alle Zutatenmengen so zu ändern, dass die Angaben für genau eine Portion stimmen. Der Button ist nur dann aktiv, wenn im Rezept für Portionen eine Zahl abweichend von 1 eingetragen ist.
Bild 5: Das Formular zur Rezepteverwaltung weist einige zusätzliche Features auf
Im Formularfuß sind zwei Schaltflächen untergebracht, die zum einen das bekannte Nährwerteformular aufrufen lassen, zum anderen den Kalorienrechner zur Ermittlung des täglichen Energiebedarfs. Beide werden im Beitrag Nährwertdatenbank dieser Ausgabe erläutert.
Ist der Energiebedarf ermittelt worden, so zeigt ein Label unter der Zutatenliste zusätzlich an, welchen Anteil das aktuelle Rezept an Ihrem Tagesbedarf haben kann.
Und schließlich erwirkt ein Klick auf die Schaltfläche Nährwertdaten des Rezepts das öffnen einer Abfrage, die weitere Kennzahlen zu den Inhaltsstoffen des Gesamtrezepts ausgibt. Dazu später mehr. Schauen wir uns zunächst Schritt für Schritt den Aufbau und die Code-Teile des Formulars frmRezepte an.
Das Unterformular für die Zutaten kommt aus dem Formular sfrmRezepte (Bild 6), welches an eine Abfrage auf Basis der Tabelle tblRezeptezutaten gebunden ist. Es enthält ein Kombinationsfeld für das Nahrungsmittel, gebunden an das Feld IDNahrungsmittel, und eine Textbox für die Mengenangabe. Als Standardansicht ist Datenblatt eingestellt. Die Abfrage qry_sfrmRezepte als Datenherkunft dieses Unterformulars gibt allerdings noch mehr Felder zurück, als aus diesen beiden Steuerelementen ersichtlich wird (siehe Bild 7).
Bild 6: Für Unterformular der Zutatenliste ist das Formular sfrmRezepte in Datenblattansicht zuständig
Bild 7: Die Abfrage qry_sfrmRezepte stellt die Datenherkunft des Unterformulars dar
Wichtig ist vor allem das Feld IDRezept, weil es zur Verknüpfung des Unterformulars mit der ID des Hauptformulars dient. Das Feld Energie berechnet die Kalorienzahl für den Zutatendatensatz gemäß seiner Menge nach dieser Formel:
[Kcal]*[Menge]/100 AS Energie
Dieser Wert wird später dafür benötigt, um die Summe der Kalorien des Rezepts zu bestimmen und damit auch seinen Anteil am Tagesbedarf.
Zu einem Rezept navigieren Sie über das Kombinationsfeld rechts oben im Hauptformular. Seine Daten bezieht es aus der Rezeptetabelle.
Möchten Sie weiterlesen? Dann lösen Sie Ihr Ticket!
Hier geht es zur Bestellung des Jahresabonnements des Magazins Access [basics]:
Zur Bestellung ...
Danach greifen Sie sofort auf alle rund 400 Artikel unseres Angebots zu - auch auf diesen hier!
Oder haben Sie bereits Zugangsdaten? Dann loggen Sie sich gleich hier ein: