Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Cas pratique complet de gestion de base de données relationnelles
Dans ce cas pratique, nous partons d'une
base de données de facturation dans laquelle il n'existe que les
tables et leurs
relations. Nous allons devoir construire tout le reste.
- Télécharger la base de données facturation-pratique.accdb en cliquant sur ce lien,
- L'ouvrir dans Access,
- Cliquer sur le bouton Activer le contenu situé sous le ruban,
Cette
base de données est constituée de quatre
tables. La
table Clients qui recense les clients, la
table Catalogue qui recense les produits à vendre, la
table Commandes qui liste les commandes des clients de la première table et enfin la table
Détail des commandes qui énumère le détail de chaque commande avec les articles achetés et les quantités. Ces quatre
tables sont donc reliées entre elles par le jeu des
relations.
A ce stade, cette
base de données ne contient ni
requête ni
formulaire.
Formulaire avec sous-formulaire
Nous souhaitons créer un
formulaire complexe que nous nommerons
Saisie des Commandes. Le
formulaire doit contenir les informations des
tables Clients et
Commandes sur la partie supérieure tandis que le
sous formulaire doit contenir les informations des
tables Catalogue et
Détail des commandes. Un support de formation enseigne sur la création des formulaires avec sous-formulaires :
Les formulaires de base de données. Nous savons construire un
formulaire avec
sous-formulaire à partir de deux
tables reliées entre elles mais pas à partir de quatre. L'astuce consiste à regrouper les
tables avec des
requêtes. Une
requête Clients - Commandes et une
requête Catalogue - Détail des commandes. Les
requêtes sélection étant considérées comme des
tables, nous aurons ainsi les deux sources nécessaires pour construire le
formulaire avec
sous-formulaire présentant les données issues des quatre
tables.
Création des requêtes
Commençons par la
requête regroupant les clients et leurs commandes.
- Cliquer sur l'onglet Créer pour activer son ruban,
- Cliquer sur le bouton Création de requête de la section Requêtes,
Nous passons ainsi directement en mode création.
- Dans la boîte de dialogue qui apparaît, sélectionner les tables Clients et Commande avec la touche CTRL et la souris,
- Cliquer sur le bouton Ajouter puis sur le bouton Fermer,
- Ajouter tous les champs de la table Clients en les cliquant et glissant sur la zone de requête,
- De la même façon, ajouter tous les champs de la table Commande, sauf numcli,
- Et enregistrer la requête (CTRL + S) sous le nom Clients-Commandes,
- Fermer la requête en cliquant sur la croix de son onglet.
Nous avons ajouté
numcli de la
table Clients (
Clé primaire et
intégrité référentielle) et non depuis la
table Commande (
Clé externe) puis
numcom de la
table Commande (
Clé primaire et
intégrité référentielle), de façon à ce que les
enregistrements puissent être créés depuis le
formulaire. Il ne s'agit pas seulement d'une zone de consultation. Réalisons maintenant la
requête regroupant le détail des commandes et les produits du catalogue.
- Cliquer sur l'onglet Créer pour activer son ruban,
- Cliquer sur le bouton Création de requête de la section Requêtes,
- Sélectionner les deux tables Catalogue et Détail des Commandes,
- Cliquer sur le bouton Ajouter puis le sur bouton Fermer,
- Ajouter tous les champs de la table Catalogue,
- Ajouter les champs numcom, remise et quantité de la table Détail des commandes,
- Créer le champ Total permettant de calculer le prix avec remise et quantité selon l'expression suivante : Total: [prix de vente]*(1-[remise])*[quantité],
Dans une
requête en mode création, un nouveau
champ se crée en lui attribuant un nom suivi de deux points (:). Le reste n'est qu'un calcul faisant intervenir les noms de
champ qui doivent toujours être inscrits entre crochets. Nous venons de créer un
champ calculé, soit une valeur qui se calcule automatiquement en fonction des données des
tables.
- Enregistrer la requête (CTRL + S) sous le nom Catalogue-Détail,
- Fermer la requête en cliquant sur la croix de son onglet.
Nous avons ajouté le
champ référence de la
table Catalogue (
Clé primaire et
intégrité référentielle) et non celui de la
table Détail des commandes (
Clé externe) de façon à ce que les
enregistrements puissent être créés depuis le
formulaire. De plus et c'est très important, nous avons bien ajouté le
champnumcom de la table
Détail des commandes. C'est lui qui fait le lien avec la
table Commande, donc le lien entre le
formulaire et le
sous-formulaire.
Création du formulaire
Nous allons créer le
formulaire en faisant appel aux deux
requêtes précédentes regroupant l'ensemble des besoins :
- Cliquer sur l'onglet Créer pour activer son ruban,
- Cliquer sur le bouton Assistant formulaire dans la section Formulaires,
- Dans la liste Tables/Requêtes, sélectionner la Requête : Clients-Commandes,
- Ajouter tous ses champs en cliquant sur le bouton double flèche de la zone centrale,
- Dans la liste Tables/Requêtes, sélectionner la Requête : Catalogue-Detail,
- Ajouter tous ses champs de la même manière,
- Cliquer sur le bouton Suivant,
- Vérifier que la case Formulaire avec sous-formulaire(s) est cochée sinon la cocher,
- Conserver l'affichage des données comme proposé par défaut par Clients-Commandes,
C'est ainsi que nous retrouverons les informations du client et de ses commandes sur la partie supérieure et le détail de ses commandes faisant référence au catalogue en
sous-formulaire sur la partie inférieure.
- Cliquer sur Suivant,
- Choisir Feuille de données pour la présentation,
- Cliquer sur Suivant,
- Nommer le formulaire Saisie-commandes,
- Nommer le sous-formulaire Detail-saisie-commandes,
- Cliquer sur Terminer.
Le formulaire est créé et s'affiche tel que le présente la figure ci-dessus. Cependant il n'est pas agencé comme voulu. De plus il manque tous les champs de synthèse :
Total HT,
Tva,
Total Ttc.
Formulaire en mode création
- Cliquer sur la flèche du bouton Affichage dans le ruban,
- Puis, cliquer sur Mode création dans la liste,
- Elargir la zone de formulaire pour avoir plus de place,
- Disposer les éléments du formulaire selon le modèle proposé par la capture ci-dessous,
N'oubliez pas que pour déplacer un
champ indépendamment de son étiquette il faut le cliquer et le glisser depuis sa poignée d'angle supérieure gauche. Pensez de même à utiliser les outils d'alignements et d'ajustements d'espacements dans le ruban
Organiser avec les boutons
Aligner et
Taille/Espace.
- Se placer en dessous du sous formulaire,
- A l'aide de la section Contrôles du ruban Création, placer trois zones de texte comme l'illustre la figure ci-dessous,
- Nommer les zones de texte : total_ht, tva et total_ttc.
Attention à l'entête de page qui permet comme dans Word de répéter des informations sur chaque page. Ces informations en revanche ne sont pas visibles en exécutant le mode conception. Aucun
champ ne doit donc y être placé.
Les totaux par client
La zone de
texte total_ht doit afficher le total hors taxes de toutes les commandes par client. Il s'agit donc de la somme des totaux présents dans le sous formulaire.
- Fermer le formulaire Saisie-commandes,
- Et ouvrir le sous-formulaire en mode création,
- Ajouter une zone de texte nommée HT dans le pied de formulaire,
- Saisir dans cette zone le calcul : =Somme([total]),
- Enregistrer le sous formulaire (CTRL + S),
- Fermer le sous-formulaire,
- Ouvrir le formulaire en mode création,
- Sélectionner la zone de texte total_ht,
Nous allons utiliser le
générateur d'expression pour lier la source de contrôle de cette zone de texte avec le
champ calculé que nous venons de créer dans le
sous formulaire.
- Dans sa feuille de propriétés, cliquer sur l'onglet Données,
- Cliquer sur le bouton du générateur d'expression à l'extrémité droite de sa propriété Source contrôle,
- Dans la liste de gauche Eléments d'expression, déployer Saisie-commandes,
- Puis, cliquer sur Detail-saisie-commandes,
Ainsi nous affichons dans la liste centrale, tous les objets présents dans le
sous-formulaire.
- Double cliquer sur le champ HT pour établir le lien entre les deux contrôles,
L'expression suivante :
=[Detail-saisie-commandes].[Formulaire]![HT] s'affiche dans le générateur d'expression.
- Cliquer sur Ok pour valider.
Si vous basculez le formulaire en affichage Mode formulaire, vous constatez qu'aucun format numérique ne lui est attribué, expliquant le grand nombre de décimales.
- Attribuer au champ total_ht un format monétaire avec 2 décimales à l'aide de l'onglet Format de sa feuille de propriétés,
- Augmenter la taille de sa police et lui attribuer un style Gras,
La somme affichée est le total HT. Nous souhaitons le total TTC. C'est pourquoi nous avons ajouté deux zones de texte. La première doit afficher le taux de TVA, la seconde le total avec cette TVA. Nous souhaitons que le taux de TVA puisse varier sur ordre de l'utilisateur selon des valeurs prédéfinies. En fonction de la valeur de la tva, le Total TTC doit s'ajuster :
- Afficher le formulaire en mode création,
- A l'aide de la section Contrôles du ruban Création, ajouter une Zone de liste déroulante,
- Dans l'assistant, cocher la deuxième option : Je taperai les valeurs souhaitées,
- Cliquer sur Suivant et taper les valeurs: 5.5% et 20%,
- Puis cliquer sur Suivant et Terminer.
- Modifier l'intitulé de son étiquette en Choisir un taux,
- Nommer la liste déroulante choix_taux avec sa feuille de propriétés,
Lorsque l'utilisateur clique sur la zone de liste et choisit un taux, ce taux doit être reproduit dans la zone de texte Tva. Pour cela, il faut écrire l'égalité entre les contrôles.
- Sélectionner la zone de texte tva,
- Activer l'onglet Données de sa feuille de propriétés,
- Définir sa propriété Source contrôle sur =[choix_taux],
Si vous basculez en
mode formulaire, vous remarquez que le choix d'un taux dans la liste déroulante, reproduit la valeur dans la zone de texte tva.
- Attribuer le format pourcentage à la liste déroulante et la zone de texte tva,
- Attribuer la valeur par défaut 0,2 à la liste déroulante toujours grâce à sa feuille de propriétés,
La création d'état
Le didacticiel suivant :
Les états Access, forme sur la création des
états dans
Access et leurs liens avec les
formulaires.
L'état Etiquettes Clients
Nous souhaitons créer l'
état Etiquettes_clients permettant d'imprimer les étiquettes faisant apparaître le nom du client, son numéro, l'adresse, le code postal, la ville :
- Sélectionner le ruban Créer,
- Cliquer sur Assistant Etat dans la section Etats,
La boîte de dialogue de l'assistant apparaît. Toutes les informations que nous souhaitons imprimer par l'
état Etiquettes_clients sont contenues dans la
table clients. Il suffit donc à l'aide de l'
assistant Etat de concevoir l'
état à partir de la
table Clients :
- Dans la liste déroulante Tables/Requêtes, sélectionner la Table : Clients,
- Ajouter les champs Nom, numcli, adresse, code postal, ville en double cliquant sur chacun d'entre eux,
- Cliquer sur suivant,
- Ajouter deux niveaux de regroupement, d'abord un sur le nom puis un sur la ville comme le propose la capture ci-dessous,
Il s'agit d'une question de présentation des données pour l'impression.
- Cliquer plusieurs fois sur Suivant jusqu'à arriver à la dernière étape de l'assistant,
- Le nommer Etiquettes_clients et cliquer sur Terminer.
Prêt à imprimer, l'
état s'affiche alors.
- Fermer l'état en cliquant sur la croix de son onglet.
L'état Recap_clients
Nous souhaitons créer l'
état permettant d'afficher le nom du client, son numéro, les références produits triées, la désignation et le prix total. Cet état doit afficher un total et un pourcentage par client. Les informations permettant de construire cet état sont contenues dans les tables Clients et Catalogue :
- Cliquer sur le bouton Assistant Etat dans le ruban Créer,
- Sélectionner d'abord la table clients à l'aide de la liste déroulante,
- Ajouter les champs nom et numcli,
Avant de cliquer sur Suivant nous devons ajouter les
enregistrements de la
table Catalogue:
- Sélectionner la table Catalogue à l'aide de la liste déroulante,
- Ajouter les champs référence, Désignation et prix de vente,
- Cliquer sur Suivant,
- Choisir d'afficher les données Par clients,
- Cliquer sur Suivant,
- Ajouter un niveau de regroupement sur le nom,
- Cliquer sur Suivant,
- Choisir un tri sur le champ référence,
Nous souhaitons afficher un total et un pourcentage par client :
- Cliquer sur le bouton Options de synthèse,
- Cocher les cases Somme, Total uniquement, Calculer le pourcentage du total pour les sommes,
- Cliquer sur Ok et sur Suivant,
- Choisir un type de présentation Echelonné en orientation paysage,
- Cliquer sur Suivant,
- Nommer l'état Recap_clients et cliquer sur Terminer,
- Fermer l'état.
L'état Facture
En suivant la même méthode que pour la création du
formulaire avec
sous formulaire :
- Créer l'état présenté par la capture d'écran ci-dessous à l'aide de l'assistant Etat.
Bien sûr l'état doit être construit à l'aide des deux
requêtes Clients-commandes et Catalogue-Détail. Aucune option de synthèse n'est nécessaire. En revanche, il faut ajouter un niveau de regroupement sur le
champ numcli. De la première
requête, les champs titre,contact, téléphone, fax et notes peuvent être omis afin de gagner de la place. Pensez à choisir une orientation Paysage et à bien nommer l'
état Facture.
Vous aurez bien sûr besoin d'ajuster le placement et les dimensions des
champs en mode création afin que la présentation soit satisfaisante. Comme nous souhaitons créer un lien entre le
formulaire et l'
état par le biais d'un bouton Aperçu, nous devons ajouter un
saut de page avant section sur l'en-tête de groupe numcli.
- Afficher l'état en mode création,
- Cliquer sur la zone de l'en-tête de groupe numcli,
- Dans sa feuille de propriétés, onglet Format, régler sa propriété Saut de page sur Avant section,
- Enregistrer l'état,
- Puis l'afficher en mode Aperçu avant impression,
Comme vous le constatez, désormais chaque page affiche un client indépendamment. C'est ce que nous souhaitions de manière à ensuite commander l'aperçu d'un client depuis le
formulaire. Il faudra être capable de dire à quelle page se rendre en fonction du client consulté. Avant cela, nous souhaitons ajouter pour chaque client la somme de ses commandes HT. Nous allons donc créer un
champ calculé qui doit être placé dans le
pied de groupe. Or le
pied de groupe numcli n'est pas visible sur l'
état. Pour l'afficher :
- Afficher l'état en mode création,
- Cliquer avec le bouton droit de la souris sur l'état à un endroit où il n'y a pas de champ,
- Dans le menu contextuel qui s'affiche, cliquer sur Trier et grouper,
Une zone
Regrouper s'affiche en bas de la fenêtre
Access.
- Cliquer sur l'option Plus,
- Avec les flèches, choisir avec une section pied de page,
Du coup la section
Pied de groupe numcli apparaît sous la
section Détail comme l'illustre la capture ci-dessous.
- Y ajouter une zone de texte pour le calcul du total hors taxes de la commande,
- Saisir dans ce champ la formule =Somme([total]),
Total étant le
champ calculé de la partie détail pour chaque commande, ce calcul effectuera bien la somme des totaux pour chaque commande.
En affichant l'état en mode aperçu avant impression, vous constatez que vous obtenez bien le calcul de synthèse demandé.
Le lien entre le formulaire et l'état
Un
didacticiel explique comment
relier un formulaire et un état par le biais d'une condition WHERE.
- Fermer l'état en cliquant sur la croix de son onglet,
- Ouvrir le formulaire Saisie-commandes en mode création,
- A l'aide du ruban Création, ajouter un bouton sous le sous-formulaire,
- Dans l'assistant, choisir Opérations sur état dans la liste de gauche,
- Puis sélectionner Aperçu d'un état dans la liste de droite,
- Cliquer sur le bouton Suivant,
- Sélectionner l'état Facture dans l'étape qui suit,
- Cliquer sur Suivant,
- Choisir l'image de la Loupe,
- Cliquer sur Suivant,
- Nommer le bouton Aperçu et cliquer sur Terminer.
L'opération n'est pas encore terminée. En effet le bouton ne fait qu'afficher l'aperçu du client, le premier. Il n'établit pas encore le lien entre le client consulté sur le formulaire et celui qui doit s'afficher sur l'état. Le champ qui permet d'établir ce lien est le
champ numcli. Il faut préciser que le
numcli de l'
état qu'on souhaite afficher doit correspondre au
numcli du
formulaire d'où on vient. C'est la
condition WHERE de la
macro attachée au bouton qui permet de réaliser cette acrobatie.
- Afficher le formulaire en mode création,
- Sélectionner le bouton,
- Dans sa feuille de propriétés, cliquer sur son onglet Evénement,
- Cliquer sur le petit bouton de son événement Sur clic,
Vous basculez ainsi dans l'
éditeur de macro.
- Cliquer dans la zone Condition WHERE de l'action déjà présente,
- Saisir l'expression suivante :[numcli]=[Formulaires]![Saisie-commandes]![numcli],
Nous traduisons en langage Access ce que nous avons décrit plus haut. Le numéro de client de l'état (
[numcli]) doit correspondre (
=) au numéro de client du formulaire (
[Formulaires]![Saisie-commandes]![numcli]) au moment où nous cliquons sur le bouton.
- Enregistrer la macro et la fermer,
- Afficher le formulaireen mode formulaire,
- Naviguer jusqu'Ã un client de votre choix,
- Cliquer sur le bouton Aperçu.
Cette fois vous affichez bien l'
aperçu avant impression de la facturation du client que vous étiez en train de consulter depuis le
formulaire.