Formulaires et sous-formulaires
en date de :
VIDEO: Problèmes avec modèle actuel
- Table Facture contient trop de répétitions - chaque enregistrement représente un film loué - on doit répéter Numéro de client, date sortie, etc.
- Très difficile de produire une seule facture pour plusieurs films loués - on pourrait créer un formulaire tabulaire mais, il ne sera pas pratique: comment choisir le client? quelle date? quels films vont sur quelle facture? C'est possible en codant la Requête appropriée et en manipulant les propriétés de l'État pour obtenir un résultat passable - mais il manque toujours les taxes, les totaux, etc.
 Fig. 11-1
 Fig. 11-2
VIDEO: Nouveau modèle
- D'abord, revoyons le modèle élémentaire que nous avons développé pour VIDEO:
 Fig. 11-3
- Comment est programmée la relation "Loue" entre Client et Film? Pouvons-nous ajouter un champ pour "Numéro de film loué" à Client? Un champ pour "Client qui loue le film" à Film?
- La solution retenue consiste à créer une nouvelle Table: Location - mais on a vu que ce modèle aussi a des faiblesses
- Meilleure solution: briser la table Location en deux: Location_Maitre et Location_Detail - la table Location_Maitre contient toutes les informations sur la transaction au complet et la table Location_Detail contient les détails des films loués
 Fig. 11-4
- Le dessin Fig. 11-4 a été créé avec le logiciel de modélisation PowerDesigner de Sybase - Platinum Technology vendent un autre outils du même genre bien connu: ERWin - ce genre de logiciel nous permet de dessiner un modèle et, à partir du modèle, il peut créer les tables, relations, etc., automatiquement - on peut aussi faire du "reverse engineering" où on dessine un modèle à partir d'une base existante (souvenez-vous en lorsqu'on vous demandera de faire des modifications sur une bd où le concepteur n'a pas tenu sa documentation à jour!)
- Notez: il est nécessaire de créer une nouvelle base de données pour passer d'un modèle à l'autre mais, il n'est pas nécessaire de refaire toutes les tables - on crée une nouvelle bd, VIDEO2, par exemple, et on importe les tables qu'on veut garder de VIDEO - dans les vraies applications on parle de différentes versions de la bd - on garde l'ancienne version comme backup au cas où il faudrait y revenir
Nouveau formulaire
- Pour saisir les détails de la location de films par le client, nous allons créer un formulaire d'après un modèle très commun qu'on appelle "Maître/détails" ou "Master/Detail" - ce modèle est utilisé pour toutes sortes de situations fréquentes dans un système de gestion: bon de commande, bon d'achat, facture, liste de cours d'un étudiant, etc.
- La partie Maître du formulaire contient toutes les informations communes à la transaction: nom et adresse du client, livraisons, etc.
- La partie Détails contient tous les détails des items de la transaction: nom de chaque produit vendu, prix, quantité, etc.
- Par exemple, dans la bd démo, COMPTOIR.MDB, le formulaire "Commande" sert à saisir les produits commandés par le client - on utilise un formulaire principal pour la partie Maître et un sous-formulaire pour la partie Détails:

Pour pouvoir atteindre ce résultat, il faut avoir la structure appropriée.
Il faut avoir une table Maitre et une table Détails dans la base de données. Dans Northwind, ce sont les tables Orders et Order Details:

- Comment cela se compare-t-il avec la location de films? À une date et une heure spécifique, un client qui a un nom et une adresse loue un certain nombre (1-n) de films; chaque film est loué à un prix quelconque et a une date de retour différente; après avoir saisi tous les films on calcule le sous-total, on ajoute les taxes et on collecte le total dû
Technique de création du formulaire
|