Es gibt eine ganze Menge Objekte auf der Welt, die sich abseits der üblichen Adress- und Kundendaten in einer Datenbank verwalten lassen. Auf der Suche nach weniger trivialen Inhalten stießen wir auf die Daten von Lebensmitteln und deren Nährwerten – in Zeiten zunehmender Verunsicherung in Sachen Ernährung möglicherweise ein interessantes Thema. Herausgekommen ist eine Anwendung mit einer zusätzlichen Rezepteverwaltung und einem Kalorienrechner.
Beispieldatenbank
Die Beispiele dieses Artikels finden Sie in der Datenbank 1609_Naehrwerte.accdb
Lebensmittel und Nährwerte
Im Netz lassen sich zahlreiche Datensammlungen zu Lebensmitteln und deren Nährwerten finden. Die Qualität dieser Daten ist allerdings sehr inhomogen. Im einen Fall ist der Umfang zu gering, im anderen stimmen die Inhalte teilweise nicht. Größer ist allerdings das Problem mit den Datenformaten. Man findet die Tabellen im Text- oder CSV-Format, als Excel-Files oder gar als SQL-Postgres-Dump. Derlei zieht eine Konvertierung zu Access nach sich, die meist mit Nachbearbeitungen verbunden ist. Doch selbst dann, wenn Sie eine originäre Access-Datenbank zum Download finden, stehen Sie häufig vor Problemen.
Ein gutes Beispiel ist die regelmäßig aktualisierte Datenbank des US-Landwirtschaftsministeriums (Link), die unter anderem auch im ACCDB-Format vorliegt. An Vollständigkeit lässt diese Datenbank mit ihren etwa 9.000 Datensätzen nichts zu wünschen übrig. Indessen ist ihre Nomenklatur komplett englisch und weiter das Datenmodell mit den 13 Tabellen so verzweigt, dass sich ihre Verwendung für eine simple Nährwertdatenbank praktisch ausschließt.
Lange Rede, kurzer Sinn: Unsere Nährwerttabelle leitet sich aus mehreren Quellen ab, die schließlich über Konvertierungen und Anfüge- wie Aktualisierungsabfragen erhalten wurde. Wir sehen davon ab, hier das erfolgte Procedere zu beschreiben. Ergebnis ist ein Datenpool mit circa 12.000 Datensätzen, die jeweils 48 Kennzahlen enthalten. Die hohe Zahl ist dem Umstand geschuldet, dass nicht nur elementare Lebensmittel verzeichnet sind, sondern auch zusammengesetzte Produkte, wie etwa der Allgäuer Käsesuppentopf oder die Schweinezunge mit Weißweinsoße, also Imgrunde fertige Rezepturen.
Datenmodell
Einfacher geht’s nicht: Die Nährwertdaten befinden sich alle in nur einer Tabelle tblNaehrwerte, die sich rechts in Bild 1 findet. Die ID als Autowert stellt den Primärschlüssel der Tabelle, das Feld Nahrungsmittel seine Bezeichnung. Es ist ebenfalls mit einem eindeutigen Index versehen, um Doppelungen auszuschließen. Darauf folgen 48 Felder zu allen möglichen Kennzahlen, wie der Gehalt an Calcium, Fett, oder Aminosäuren. Diese Zahlenfelder sind allesamt als Double definiert. Den Entwurf der Tabelle zeigt Bild 2. Verbunden mit der Nährwerttabelle sind tblRezepte und tblRezepteZutaten. In der ersten werden die angelegten Rezepte namentlich verzeichnet, wobei im Rezept zusätzlich die gedachte Portionen-Menge spezifiziert ist. Die zweite verknüpft Rezepte und Nahrungsmittel n:m. Ein Rezept kann demnach mehrere Nahrungsmittel enthalten, deren Menge in der Verknüpfungstabelle als Double-Zahl für das Gewicht in Gramm aufgeführt ist.
Bild 1: tblNaehrwerte im Entwurf
Bild 2: Das ziemlich überschaubare Datenmodell der Nährwertdatenbank
Zur Laufzeit sieht die Nährwerttabelle als Datenblatt aus, wie in Bild 3. Sie können sie schon hier über die Filterpfeile der Spaltenköpfe gemäß Ihrer Kriterien filtern und sortieren. Sortieren Sie etwa absteigend nach Eiweiß, um die Lebensmittel mit dem höchsten Eiweißgehalt zu ermitteln.
Bild 3: So präsentiert sich ein Teil der 50 Felder der Haupttabelle tblNaehrwerte in der Datenblattansicht
Sehr unpraktisch sind indessen die vielen Felder, die ein horizontales Scrollen erfordern, sodass die Daten eines Lebensmittels auch auf einem großen Monitor nie auf einen Blick zu sehen sind. Hier muss ein Formular mit Detailfeldern her!
Nährwerteformular
Bei 12.000 Datensätzen ist das Auffinden eines Lebensmittels eigentlich nur über eine Suchfunktion praktikabel. Deshalb statten wir unser Formular auch mit einer solchen aus. Bild 4 zeigt den Aufbau. Rechts oben befindet sich das Textfeld zur Eingabe eines Suchbegriffs. Unmittelbar nach jedem Tastendruck soll sich dabei die Liste der Nahrungsmittel links im Unterformular sfrmList kontinuierlich aktualisieren. Bei diesem Unterformular auf Basis des Formulars sfrmNahrungsmittel handelt es sich um ein schlichtes Formular in Datenblattansicht, welches aus der Tabelle tblNaehrwerte nur die Lebensmittelbezeichnungen über diese Abfrage auflistet:
Bild 4: Das Nahrungsmittelformular im Entwurf enthält zwei Unterformulare
SELECT ID, Nahrungsmittel FROM tblNaehrwerte ORDER BY Nahrungsmittel;
Wird in dieser Liste ein Lebensmittel angeklickt, so sollen im Unterformular sfrmDetail rechts dessen Daten erscheinen. Das hier verwendete Formular sfrmNahrungsmittel_E ist direkt an die Tabelle tblNaehrwerte gebunden und sieht im Entwurf aus, wie in Bild 5. Das Hauptformular selbst ist, wohlgemerkt, an gar keine Datenherkunft gebunden! Damit entfallen auch etwaige Feldverknüpfungen zwischen Haupt- und Unterformularen.
Bild 5: Das Detailunterformular sfrmNahrungsmittel_E im Entwurf
Aufgabe der VBA-Routinen des Formulars also ist es, einerseits die Filterung des Datenbestands über das Suchfeld zu erreichen, andererseits eine aktive Verbindung zwischen Listenunterformular links und Detailunterformular rechts herzustellen. Im Betrieb präsentiert es sich etwa wie in Bild 6. Als Suchbegriff wurde hier Weizenbr eingegeben. Wie an der Liste links zu erkennen, filtert die Datenbank nicht nach dem Anfang des Begriffs, sondern nach dem Inhalt, also LIKE. Folglich tauchen auch die Knäckebrot-Weizenbrote im Ergebnis auf. Markiert aber wurde das Weißbrot-Weizenbrot, dessen Detaildaten darum rechts im Formular erscheinen.
Bild 6: So sieht das Nahrungsmittelformular schließlich in Aktion aus
Dort sind von den 48 Feldern tatsächlich nur 32 untergebracht. Es handelt sich dabei um die relevantesten Kennwerte. Die restlichen sind eher akademischer Natur und aus Platzgründen außen vor gelassen. Tragen Sie diese selbst nach, wenn Sie möchten.
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: