I. Le cahier des charges▲
On voudrait un formulaire avec des listes déroulantes qui permettent de composer des menus du lundi au vendredi pour un cycle de quatre semaines.
Le menu journalier comporte :
- une entrée
avec féculent, avec protéines ou une combinaison des deux ; - le choix entre trois plats principaux
deux « poils/plumes » : bœuf, veau, porc, agneau, volaille, œufs…
un « poisson » ; - un féculent ;
- un légume ;
- un fromage ou yaourt ;
- le choix entre deux desserts ;
- un yaourt ou un fruit ;
- un bar avec quatre salades.
Pour l'entrée et les plats « poils/plumes », l'utilisateur pourra définir pour chacun des vingt jours, la caractéristique des mets qui figureront dans les listes déroulantes.
Exemple, pour le mardi de la 2e semaine : une entrée avec protéines, le plat1 avec bœuf et le plat2 avec œufs.
Les listes déroulantes ne proposeront que les mets dont tous les ingrédients sont disponibles à cette période de l'année.
Le programme contrôlera pour chaque jour, l'absence de doublon dans les mets sélectionnés.
II. Pour exprimer qu'un ingrédient est disponible▲
On convient que l'ingrédient est disponible en tout temps si la colonne Disponibilite est vide.
Les numéros des mois pendant lesquels l'ingrédient est disponible sont séparés par un espace.
III. Pour exprimer que tel plat relève de tel type et contient tels ingrédients▲
Le formulaire fPlats (père) contient sfIngredients (fils).
Si la technique des formulaires pères/fils ne vous pas familière, voyez ce tutoriel : Comment classer les données dans des tables liées et construire un formulaire père/fils.
N.B. Les fonctionnalités de ce formulaire sont rudimentaires. Au besoin, on pourrait y ajouter :
- des notions de prix de revient ;
- une photo du plat ;
- la progression de la recette ;
- des filtres pour faciliter la consultation ;
- etc.
Voyez un exemple de réalisation dans ce tutoriel : Outils pour la gestion d'un restaurant.
IV. Pour déterminer qu'un plat est disponible durant tel mois▲
IV-A. Une 1re requête pour déceler les ingrédients NON disponibles▲
IV-B. Une 2e requête pour en déduire les plats NON disponibles▲
IV-C. Et enfin la requête qui ramène les plats disponibles▲
V. Un formulaire pour planifier le type (variable) de plat▲
Dans le menu journalier, l'entrée et les deux plats « poils/plumes » relèvent de plusieurs types :
Entrée : « avec féculent », « avec protéines » ou « avec féculents et protéines » ;
Plat 1 et Plat 2 : « bœuf », « veau »…
Par contre, les autres items n'ont chacun qu'un seul type :
Plat 3 : toujours « Poisson » ; Féculents : toujours « Féculents »…
Le formulaire fParam permet de planifier le type pour chacun des 20 menus du cycle :
VI. Le formulaire fPrepaMenu▲
VI-A. La structure▲
Le formulaire fPrepaMenu est indépendant : il n'a pas de source.
À l'ouverture, la zone de texte txtDateDepart affichera soit ce lundi, soit le lundi le plus récent.
Les deux boutons permettent de reculer ou d'avancer d'un lundi.
Cinq zones de texte NumJouri (i = 1 à 5) contiennent la valeur 1 à 5, correspondant au rang du jour dans une semaine.
Les contrôles CNTRsfMenui (i= 1 à 5) sont des conteneurs de sous-formulaires qui seront chacun fils de fPrepaMenu.
Remarquez que les sous-formulaires ne sont pas encore désignés. Par contre les propriétés Champs fils et Champs pères sont déjà définies.