Bases de données : Travaux dirigés

Voir aussi : le support de cours Introduction aux bases de données.

Réaliser une application de gestion des commandes.

Travail à faire :

  1. Créer les tables
  2. Définir les relations
  3. Charger des données à partir d’un jeu d’essai
  4. Créer les formulaires de saisie
  5. Créer les états imprimés
  6. Personnaliser l’application

1. Créer les tables

Créer les tables suivantes :

  • Produit
  • Client
  • Commande
  • Detail

Table Produit

Nom Type Taille, format Null interdit Chaîne videautorisée Valide si
CodeProduit Texte 3 Oui Non
Designation Texte 40 Oui Non
PrixUnitaire Monétaire Euro (2 décimales) Oui >0

Table Client

Nom Type Taille, format Null interdit Chaîne videautorisée Valide si
NumClient NuméroAuto Entier long (incrément)
NomClient Texte 40 Oui Non
Adresse Mémo Non Non
CodePostal Texte 10 Non Non
Ville Texte 15 Non Non
Pays Texte 15 Non Non

Table Commande

Nom Type Taille, format Null interdit Chaîne videautorisée Valide si
NumCommande NuméroAuto Entier long (incrément)
RefClient Numérique Entier long Oui
DateCommande Date/Heure Date, abrégé (jj/mm/aaaa) Oui

Table Detail

Nom Type Taille, format Null interdit Chaîne videautorisée Valide si
RefCommande Numérique Entier long Oui
RefProduit Texte 3 Oui Non
Quantite Numérique Entier Oui >0

2. Définir les relations

Définir les relations suivantes (appliquer l’intégrité référentielle) :

Clé primaire (1) Clé étrangère (n) Mettre à jour en cascade Effacer en cascade
Client.NumClient Commande.RefClient Non Non
Commande.NumCommande Détail.RefCommande Non Oui
Produit.CodeProduit Detail.RefProduit Oui Non

Relations

3. Charger des données à partir d’un jeu d’essai

Charger les données à partir des fichiers suivants, dans l’ordre indiqué :

  1. produit.txt
  2. client.txt
  3. commande.txt
  4. detail.txt

Les fichiers sont au format texte délimité ou CSV (Comma Separated Values) :

  • le caractère « ; » (point-virgule) est utilisé comme séparateur de champ
  • le caractère «  » » (guillemet double) est utilisé comme délimiteur de texte

La première ligne contient les noms des champs ; ces noms doivent coïncider à ceux de la table dans laquelle on importe les données.

4. Créer les formulaires de saisie

Créer les formulaires suivants :

  • Clients
  • Produits
  • Commandes

Formulaire Clients

Créer le formulaire suivant basé sur la table Client :

Formulaire Client

Ce formulaire est de type formulaire unique (une page par enregistrement).

Propriétés du formulaire (format) :

Propriété Valeur
Affichage par défaut Formulaire unique
Barre défilement Aucune
Afficher sélecteur Non
Boutons de déplacement Oui
Diviseurs d’enregistrements Non

Formulaire Produits

Créer le formulaire suivant basé sur la table Produit :

formulaire_produit

Ce formulaire est de type formulaires continus (une page par enregistrement).

Formulaire en mode création :

formulaire_produit_creation

Propriétés du formulaire (format) :

Propriété Valeur
Affichage par défaut Formulaires continus
Barre défilement Verticale
Afficher sélecteur Non
Boutons de déplacement Oui
Diviseurs d’enregistrements Non

Dans le menu Affichage, cocher En-tête/Pied de formulaire.

Structure du formulaire :

  • les étiquettes donnant l’intitulé des champs sont dans la zone d’en-tête de formulaire
  • les contrôles permettant d’afficher les données sont dans la zone de détail
  • la zone de pied de formulaire ne contient rien

Formulaire Commandes

Formulaire principal

Créer la requête suivante :

requete_frm_commande

Vérifier qu’en tapant un numéro de client existant dans la colonne RefClient, on obtient bien automatiquement le nom du client, son adresse, code postal, ville et pays.

Créer le formulaire suivant basé sur la requête ci-dessus :

formulaire_commande1

Ce formulaire est de type formulaire unique.

Propriétés de la liste déroulante N° de client :

Propriété Valeur
Source contrôle RefClient
Origine source Table/Requête
Contenu Client
Colonne liée 1

Propriétés de la liste déroulante Nom de client :

Propriété Valeur
Source contrôle RefClient
Origine source Table/Requête
Contenu SELECT NomClient, NumClientFROM ClientORDER BY NomClient;
Colonne liée 2
Limiter à liste Oui

Sous-formulaire

Créer la requête suivante :

requete_frm_commande_detail

La colonne MontantHt est un champ calculé (saisir la formule comme indiqué).

Vérifications :

  • vérifier qu’en tapant un code produit existant dans la colonne RefProduit,on obtient bien automatiquement la désignation du produit et son prix unitaire.
  • vérifier qu’en tapant une quantité, on obtient bien le montant hors taxes.

Créer le formulaire suivant basé sur la requête ci-dessus :

sous_formulaire_commande

Ce formulaire est de type formulaires continus.

Structure du formulaire :

  • les étiquettes donnant l’intitulé des champs sont dans la zone d’en-tête de formulaire
  • les contrôles permettant d’afficher les données sont dans la zone de détail
  • les champs calculés sont dans la zone de pied de formulaire

Formules de calcul des champs calculés :

Nom du contrôle Formule (Propriété : Données : Source contrôle)
TotalHt =Somme([MontantHt])
Tva =Round([TotalHt]*0,196;2)
TotalTtc =[TotalHt]+[TVA]

Propriétés de la liste déroulante Code produit :

Propriété Valeur
Source contrôle RefProduit
Origine source Table/Requête
Contenu Produit
Colonne liée 1

Propriétés de la liste déroulante Désignation du produit :

Propriété Valeur
Source contrôle RefProduit
Origine source Table/Requête
Contenu SELECT Designation, CodeProduitFROM ProduitORDER BY Designation;
Colonne liée 2
Limiter à liste Oui

Inclure le sous-formulaire dans le formulaire principal

formulaire_commande

Lien entre le formulaire et le sous-formulaire :

Propriété Valeur
Champ père Commande.NumCommande
Champ fils Detail.RefCommande

5. Créer les états

Créer la requête suivante :

requete_rpt_commande

Créer l’état suivant basé sur la requête ci-dessus :

etat_commande

Formulaire en mode création :

etat_commande_creation

Menu affichage : Trier et grouper

Champ/expression Ordre de tri
NumCommande Croissant
CodeProduit Croissant

Propriétés du groupe :

NumCommande CodeProduit
En-tête de groupe Oui Non
Pied de groupe Oui Non
Regrouper sur Chaque valeur Chaque valeur
Intervalle 1 1
Section insécable Non Non

Structure de l’état :

  • la zone d’en-tête de groupe NumCommande contient les étiquettes et les contrôles permettant d’afficher les données de la commande et du client et les étiquettes de la zone de détail
  • la zone de détail contient les contrôles permettant d’afficher le détail de la commande (RefProduit, Designation, PrixUnitaire, Quantite, MontantHt)
  • la zone de pied de groupe NumCommande contient les champs calculés TotalHt, Tva, TotalTtc

Formules de calcul des champs calculés :

Nom du contrôle Formule (Propriété : Données : Source contrôle)
TotalHt =Somme([MontantHt])
Tva =Round([TotalHt]*0,196;2)
TotalTtc =[TotalHt]+[TVA]

6. Personnaliser l’application

 

  • Créer un formulaire d’accueil contenant des boutons permettant d’ouvrir les formulaires Clients, Produits et Commandes
  • Créer un bouton dans le formulaire Commande permettant d’imprimer la commande courante

Et voici le résultat.