SlideShare une entreprise Scribd logo
Informatique

                Bases de données

                 TD ACCESS

 Travail Dirigé : "Facturation
                   Facturation"




                           Marc SOUQUES
                             souques@ensat.fr

                         Version du 14 avril 2011



     Ce document appartient à : ____________________________




          INSTITUT NATIONAL POLYTECHNIQUE
ECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE
 Av de l’Agrobiopole, BP 107, 31 326 Auzeville Tolosane   Tel : 05.34.32.39.00
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

                                                               Table des Matières
CH1.        BASE DE DONNEES "FACTURATION".............................................................................................................5
  1.        C AHIER DES CHARGES POUR APPLICATION "FACTURATION" ........................................................................................5
  2.        MODELE P HYSIQUE AVEC SES LIENS SUR LE SGBD A CCESS ........................................................................................5
CH2.        LES TABLES DE BASE ..........................................................................................................................................6
  1.        C ONCEPTION ET C ONSTRUCTION DE LA BASE DE DONNEES ......................................................................................... 6
  2.        C REER LES TABLES S IMPLES ........................................................................................................................................6
       A.       Créer la table Client ..............................................................................................................................................7
       B.       Créer la table Produit............................................................................................................................................8
  3.        C REER LES TABLES C OMPLEXES ..................................................................................................................................9
       A.       Deux régles de base pour créer des tables .......................................................................................................... 10
       B.       Etude des Commandes......................................................................................................................................... 11
       C.       Créer la table CommandeEnTete ........................................................................................................................ 12
       D.       Créer la table CommandeLigneProduit .............................................................................................................. 14
       E.       Conventions de nommage dans les Tables .......................................................................................................... 16
       F.       Importer des données d'Excel dans Access.......................................................................................................... 16
       G.       Exporter des données d'Access vers Excel .......................................................................................................... 16
  4.        S ECURITE DE L'UTILISATION DE L'APPLICATION ......................................................................................................... 17
  5.        U TILISER LES TABLES EN MODE I NTERACTIF.............................................................................................................. 18
       A.       Rechercher des données ...................................................................................................................................... 18
       B.       Remplacer des données ....................................................................................................................................... 18
       C.       Tester les boutons… ............................................................................................................................................ 18
  6.        D EFINIR LES RELATIONS ENTRE LES TABLES .............................................................................................................. 19
       A.       Importance des relations dans un SGBD Relationnel ......................................................................................... 21
       B.       Des régles dans les relations ............................................................................................................................... 21
       C.       Tester l'Intégrité Référentielle des Relations ....................................................................................................... 22
  7.        R ESUME DES T ABLES ................................................................................................................................................. 23
CH3.        LES REQUETES DE BASE................................................................................................................................... 24
  1.        R EQUETE SELECTION ................................................................................................................................................. 24
       A.      Requête simple sur une seule table ...................................................................................................................... 24
       B.      Requête multitable simple avec Relation ............................................................................................................. 27
       C.      Requête multitable avec calcul par enregistrement............................................................................................. 29
       D.      Erreur à éviter dans les requêtes multitable. ....................................................................................................... 31
       E.      Les fonctions du langage VBA pour les Requêtes................................................................................................ 32
       F.      Exercices à faire .................................................................................................................................................. 35
       G.      Requête avec calcul sur "Regroupement" d'enregistrements .............................................................................. 36
       H.      Exercices à faire .................................................................................................................................................. 36
  2.        R ESUME DES R EQUETES ............................................................................................................................................. 37
CH4.        LES FORMULAIRES DE BASE .......................................................................................................................... 38
  1.        F ORMULAIRE U NITAIRE BASE SUR UNE TABLE ........................................................................................................... 38
       A.      Créer un Formulaire Colonne simple.................................................................................................................. 38
       B.      Utiliser un formulaire .......................................................................................................................................... 38
       C.      Modifier un formulaire ........................................................................................................................................ 39
  2.        F ORMULAIRE T ABULAIRE BASE SUR UNE REQUETE.................................................................................................... 43
       A.      Créer la requête source du futur Formulaire ...................................................................................................... 43
       B.      Créer un formulaire Tabulaire basé sur la requête............................................................................................. 44
       C.      Ajouter des contrôles ........................................................................................................................................... 44
       D.      Exercices à faire .................................................................................................................................................. 45
  3.        R ESUME DES F ORMULAIRES....................................................................................................................................... 45
CH5.        LES TABLES AVEC LISTES DEROULANTES DE CHOIX POUR CLE ETRANGERE........................... 46
  1.      T ABLES ACTUELLES BASIQUES................................................................................................................................... 46
  2.      C HAMP C LE ETRANGERE AVEC LISTE DEROULANTE DE C HOIX .................................................................................. 46
       A.    Modifier propriétés Liste de choix des champs clés étrangères .......................................................................... 47
       B.    Exercice à faire… ................................................................................................................................................ 49
CH6.        BILAN DE L'APPLICATION ............................................................................................................................... 51
  1.        D ES TABLES ............................................................................................................................................................... 51
  2.        D ES R EQUETES .......................................................................................................................................................... 51
  3.        D ES F ORMULAIRES .................................................................................................................................................... 51


                                                      Ensat - Informatique Appliquée - Marc Souques                                                            Page 2
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
CH7.         FACTURATION: EXTENSIONS A FAIRE SEUL ............................................................................................ 52
  1.         C AHIER DES CHARGES POUR LES TABLES ................................................................................................................... 52
        A.      Table simple......................................................................................................................................................... 52
        B.      Table complexe.................................................................................................................................................... 52
  2.         C AHIER DES CHARGES POUR LES REQUETES .............................................................................................................. 53
        A.      Requête simple ..................................................................................................................................................... 53
        B.      Requête multitable ............................................................................................................................................... 53
  3.         C AHIER DES CHARGES POUR LES FORMULAIRES ........................................................................................................ 55
        A.      Formulaire simple ............................................................................................................................................... 55
        B.      Formulaire Tabulaire basé sur une requête ........................................................................................................ 55
        C.      Formulaire "Produit" à compléter ...................................................................................................................... 55
CH8.         L'ETAT .................................................................................................................................................................... 56
  1.         C REER UN ETAT ......................................................................................................................................................... 56
        A.      Etat basé sur une table ........................................................................................................................................ 56
        B.      Etat basé sur une requête .................................................................................................................................... 57
  2.         R ESUME DES E TATS ................................................................................................................................................... 60
CH9.         LES FORMULAIRES COMPLEXES .................................................................................................................. 61
  1.         F ORMULAIRE AVEC S OUS-FORMULAIRE ..................................................................................................................... 61
  2.         F ORMULAIRE AVEC S OUS FORMULAIRE COMPLEXE ................................................................................................... 63
        A.      Version basée sur 2 Tables (pour FP) et 2 Tables (pour SF). ............................................................................. 63
        B.      Version basée sur 3 niveaux de Tables................................................................................................................ 64
        C.      Version avec 2 sous formulaires de même niveau. .............................................................................................. 64
  3.         F ORMULAIRE AVEC GRAPHIQUE ................................................................................................................................. 67
        A.      Graphique simple basé sur une Table ................................................................................................................. 67
  4.         F ORMULAIRE MENU PRINCIPAL ................................................................................................................................. 69
  5.         R ESUME SUR LES F ORMULAIRES ................................................................................................................................ 70
CH10.        LES MACROS ........................................................................................................................................................ 72
  1.       MACRO DE DEMARRAGE AUTOMATIQUE : AUTOEXEC ............................................................................................... 72
  2.       MACROS POUR OUVRIR FORMULAIRES ET ETATS........................................................................................................ 72
        A.   Créer la macro .................................................................................................................................................... 72
        B.   Attacher une macro à un événement d’un contrôle Bouton................................................................................. 73
CH11.        LES RECHERCHES .............................................................................................................................................. 74
  1.    R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MONO RESULTAT ............................................................. 75
        A. Rechercher un client sur son Nom Prénom par liste déroulante......................................................................... 75
        B. Auto-Actualiser la liste déroulante sur sa définition ........................................................................................... 77
  2.    R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MULTI RESULTATS ........................................................... 77
     A.    Rechercher des clients sur leur ville par liste déroulante ................................................................................... 77
  3.    R ECHERCHE MONO CRITERE, MULTI VALEURS DU CRITERE, MULTI RESULTATS ......................................................... 80
  4.    R ECHERCHE MULTI CRITERES, MONO VALEUR DU CRITERE , MULTI RESULTATS ......................................................... 80
CH12.        LES FORMULAIRES COMPLEXES SUITE ..................................................................................................... 82
  1.         S OUS FORMULAIRE BASE SUR R EQUETE AVEC CALCULS ............................................................................................ 82
CH13.        INTRODUCTION AUX BASES DE DONNEES ET A ACCESS ................................................................... 83
  1.       U N S YSTEME DE GESTION DE B ASES DE DONNEES .................................................................................................... 83
  2.       U NE APPLICATION DE B ASE DE D ONNEES.................................................................................................................. 83
  3.       U NE B ASE DE DONNEES ............................................................................................................................................. 83
  4.       ACCESS ................................................................................................................................................................... 84
        A.    Choix entre Access et Excel pour développer une application ? ......................................................................... 84
CH14.        CORRECTION EXTENSION: LES TABLES .................................................................................................... 85
        A.        Créer la table Categorie ...................................................................................................................................... 85
        B.        Modifier la table Produit ..................................................................................................................................... 85
        C.        Créer la table Fournisseur .................................................................................................................................. 86
        D.        Créer la table Intermédiaire ProdFour ............................................................................................................... 86
        E.        Tirer les Relations avec Intégrité Référentielle: .................................................................................................. 88
        F.        Modèle Conceptuel de Données (MCD) à la source du Modèle Physique Access............................................. 88
CH15.        CORRECTION EXTENSION: LES REQUETES .............................................................................................. 89
        A.        Requête simple ..................................................................................................................................................... 89
        B.        Requête multitable ............................................................................................................................................... 89

                                                       Ensat - Informatique Appliquée - Marc Souques                                                            Page 3
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
CH16.        CORRECTION EXTENSION : FORMULAIRES.............................................................................................. 91
        A.       Formulaire simple ............................................................................................................................................... 91
        B.       Formulaire Tabulaire basé sur une requête ........................................................................................................ 91
        C.       Formulaire produit à compléter .......................................................................................................................... 91
CH17.        DES ERREURS A NE PAS FAIRE....................................................................................................................... 92
CH18.        GESTION DES IMAGES DEPENDANTES D'ENREGISTREMENTS D'UNE TABLE ............................... 93
  1.         I MAGES ET T ABLE : VERSION1 BASEE SUR C HAMP OLE ............................................................................................ 93
        A.      Gérer un champ OLE .......................................................................................................................................... 93
        B.      Gérer un contrôle de formulaire pour afficher l'image ....................................................................................... 93
  2.         I MAGES ET T ABLE : VERSION 2 BASEE SUR C HAMP TEXTE ET MACRO D'AFFECTATION ............................................. 94
  3.         I MAGES ET T ABLE : VERSION 3 BASEE SUR C HAMP TEXTE ET P ROCEDURE-VBA D'AFFECTATION ............................ 97
  4.         R ESUME :S AISIR, STOCKER, MODIFIER ET S UPPRIMER DES IMAGES DANS DES ENREGISTREMENTS DE TABLE . .......... 99
CH19.        LES TABLES AVEC CHAMPS A LONGUEUR VARIABLE ........................................................................ 100
  1.    C HAMP DE TYPE MEMO............................................................................................................................................ 100
  2.    C HAMP DE TYPE P IECE JOINTE ................................................................................................................................. 100
  3.    C HAMP AVEC PLUSIEURS VALEURS .......................................................................................................................... 101
     A.    Démarche Classique Relationnelle.................................................................................................................... 102
  4.    F ORMULAIRE BASE SUR UN MODELE DE FORMULAIRE.............................................................................................. 105
     A.    Créer un modèle de formulaire.......................................................................................................................... 105
     B.    Créer un formulaire basé sur un 'modèle' de formulaire................................................................................... 105
CH20.        LES MODES D'UTILISATION DE L'APPLICATION ................................................................................... 106
  1.         MODE UTILISATEUR : CONFIGURATION DU DEMARRAGE ......................................................................................... 106
  2.         MODE PARTAGE DE DONNEES ENTRE PLUSIEURS UTILIS ATEURS EN RESEAU LOCAL ................................................ 107
CH21.        LES MACROS AVANCEES................................................................................................................................ 108
  1.         T ESTER LES EVENEMENTS DECLANCHANT DES MACROS DANS UN FORMULAIRE ...................................................... 108
  2.         MACRO CONDITIONNELLE ATTACHEE A UN EVENEMENT ......................................................................................... 109
  3.         R EFERENCE DES ACTIONS DES MACROS .................................................................................................................. 111
CH22.        MODIFICATION DES DONNEES DES TABLES ........................................................................................... 113
  1.    MODIFICATION MANUELLE ...................................................................................................................................... 113
  2.    MODIFICATION AUTOMATIQUE PAR REQUETE ......................................................................................................... 114
     A.   La requête action ............................................................................................................................................... 114
     B.   La requête action paramétrée par formulaire ................................................................................................... 115
  3.    MODIFICATION AUTOMATIQUE PAR MACRO ............................................................................................................ 117
     A.   Mise à jour Automatique Invisible du stock de Produit sur événement Saisie de la Quantité commandée ....... 117
CH23.        TRAITEMENTS DE SYNTHESE ...................................................................................................................... 120
  1.         F ORMULAIRE T ABLEAU C ROISE DYNAMIQUE (TCD) .............................................................................................. 120
        A.      Créer la requête source du futur formulaire ..................................................................................................... 120
        B.      Créer le formulaire TCD basé sur la requête.................................................................................................... 121
CH24.        LA BASE DE DONNEES FINALE..................................................................................................................... 123




                                                     Ensat - Informatique Appliquée - Marc Souques                                                         Page 4
- ACCESS 2007 – 2010 - Travail dirigé Facturation –



   Ch1. Base de données "Facturation"
   A partir d’un cahier des charges définissant le sujet de l'application, création de la base de données.

   1. Cahier des charges pour application "Facturation"
   Gérer une application commerciale de facturation pour PME.
   Il existe des ensembles de Clients, de Commandes et de Produits.
   Un Client    fait référence à au plus plusieurs () Commandes.
   Une Commande fait référence à au plus 1 seul Client.
   Une Commande fait référence à au plus plusieurs Produits (commandés).
   Un Produit    fait référence à au plus plusieurs Commandes (où il est commandé)
   Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée.

   2. Modèle Physique avec ses liens sur le SGBD Access
                                      Structure de la base de données à créer.




                   Ci-dessous, les champs des tables avec les VALEURS assurant les Relations.

Clé primaire                                                             Clé primaire
SANS doublon                                                             SANS doublon




                                                                                                             Clé primaire
                                                                                                             SANS doublon
                                                                                                               basée sur
                                                                                                              2 champs




        Clé primaire         Clé
       SANS doublon       étrangère
                           AVEC
                          doublons                                                Clé              Clé
                                                                               étrangère        étrangère
                                                                                AVEC             AVEC
 Légende :                                                                     doublons         doublons
               Clé primaire mono ou multi champ
               Clé étrangère liée à une clé primaire
                                        Ensat - Informatique Appliquée - Marc Souques                       Page 5
- ACCESS 2007 – 2010 - Travail dirigé Facturation –



Ch2. Les Tables de base
                                      Objectif du TD :
Construire une Base de Données de FACTURATION basée sur plusieurs Tables :
      - Client      - Produit    - Commande - Produit Commandé      pour commencer

1. Conception et Construction de la Base de données
Lorsque l'on veut construire une Maison, on doit procéder en 3 temps :
a) Créer sur le papier un Plan Conceptuel sans aspect technique des différentes Pièces qui composent
la future Maison et gérer les Liens et Interdépendances qui existent entre ces Pièces.
b) Créer sur le papier un Plan Logique, à partir du Plan Conceptuel, en y ajoutant les éléments
techniques (type de matériaux, épaisseur isolation, câblage électrique, réseau eau, chauffage, …).
c) Construire sur le Terrain la Maison Physique , à partir du Plan Logique.

En informatique, pour construire une Base de Données, on procède de même en 3 temps :
a) Créer sur le papier un Modèle Conceptuel (sans aspect technique) des différentes Entités qui
composent la future Base de Données et gérer les Associations (liens) qui existent entre ces Entités.
b) Créer sur le papier un Modèle Logique, à partir du Modèle Conceptuel, en y ajoutant les éléments
techniques (Clé primaire, Clé étrangère, Relations d'une Base de Données RELATIONNELLE)
c) Construire sur l'Ordinateur (Access) la Base de Données Physique , à partir du Modèle Logique.
                 (Voir éventuellement Cours de Modélisation présentant ces 3 modèles)
Ce TD vise à utiliser ACCESS pour créer directement sur ordinateur une Base de Données Physique
mais il est recommandé de se documenter sur les cours de Modélisation des Données qui
permettent de créer Modèles Conceptuels de Données (MCD) et Modèles Logiques de Données (MLD).
Vous trouverez plus loin dans ce document (fin Chapitre 14) le MCD (Modèle Conceptuel des Données)
correspondant à la base de données Access développée dans ce TD.
Notre démarche consiste, pour la partie concernant les Données, à établir au fur et à mesure quelques
règles simples pour définir les Tables de notre application de Facturation.

Démarrer ACCESS .
Clic sur Base de donnée vide, Clic sur       pour choisir un dossier puis nommer l'application ESSAI
(l'extension accdb signifie Access Data Base c'est le format 2007 et 2010) et bouton Créer.
- Si besoin, compréhension et configuration de l'environnement de travail :
Bouton      Office (Fichier en Version 2010) puis Options Access :
 - Standard : Définir le dossier de données par défaut pour ouvrir ou enregistrer des bases
 - Base de données active : Cocher Compacter lors de la fermeture (pour réduire la taille du fichier accdb)
  - Personnaliser : Définir les icones de la barre d'accès rapide
en haut d'écran et valider OK.

2. Créer les Tables Simples
Nous allons créer les tables Client et Produit qui sont simples car chaque enregistrement ne fait pas
référence à au plus 1 seul enregistrement d'une autre table.
Un Client      ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Produit commandé.
Un Produit ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Client.
Fermer la table ouverte par défaut.

Onglet Créer, Bouton          Création de Table pour être en mode 'Création'


                                  Ensat - Informatique Appliquée - Marc Souques               Page 6
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

A. Créer la table Client                                    Voir exemple en bas de page
Nom du Champ            Type de données             Propriétés             Un nombre qui s’incrémente
Num Client              NuméroAuto                                     automatiquement à chaque nouveau
Nom                     Texte                    Taille : 25               client saisi : 1 puis 2 puis 3
                        (Attention : le type     Format : > (conversion en Majuscule)
                        Texte est limité à       Null interdit : OUI (saisie obligatoire) (Null = VIDE)
                        255 caractères !)        Chaine vide autorisée : NON                Si besoin de plus de 255
Prénom                  Texte                    Taille : 15     Null interdit : OUI          caractères, utiliser le
                                                 Chaine vide autorisée : NON                type Mémo (taille illimitée)
Adresse                Texte                     Taille : 30                      Fonction Date() retournant la
Code Postal            Texte (pas Num car on Taille : 5                              date du jour. On peut la
                       ne fait pas de calcul sur Null interdit : NON donc           trouver par , Fonction,
                       les codes postaux !)      saisie facultative                     Fonction intégrées,
Ville                  Texte                     Taille : 25, Format : > (Majuscule) Date/heure, Date
                                                 Valeur par défaut : TOULOUSE
Date Entrée            Date/Heure                Format : Date, abrégé
                                                 Valeur par défaut : Date( )
                                                 Afficher le sélecteur : À certaines dates
Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque
enregistrement de la table (chaque élément de la population ). Deux mêmes valeurs dans 2
enregistrements de ce champ sont interdites (pas de doublons: 2 personnes ne doivent pas avoir le même
numéro de client 3).
Définir une clé primaire sur le champ: Num Client en sélectionnant ce champ puis barre d’outils
Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Client : Oui SANS doublon).
Convention personnelle pour Nom de la Clé primaire : Num + (Nom de table) = Num Client
On souhaite que le couple Nom Prénom soit unique, interdire 2 fois LECLERC Alain. Clic sur Index :
Donner librement un Nom à un Index : NomPrenom
Choisir dans la liste déroulante les 2 champs à indexer : Nom puis Prénom
Sélectionner la ligne NomPrenom et saisir Unique : Oui
pour éviter les doublons sur ce couple de champs
Enregistrer     la table (disquette de la barre outils 'Accès rapide') : Client




Passer en mode Feuille de données       pour saisir 3 Clients comme ci-dessus :
Ok pour message erreur ci-dessus, pour éviter le doublon MUILLARD Marc, modifier l'enregistrement
3 en DURAND Alain pour avoir :




Passer en mode Création            pour consulter la structure de la table puis fermer (croix à droite) la table Client.


                                     Ensat - Informatique Appliquée - Marc Souques                     Page 7
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

B. Créer la table Produit

Onglet Créer, Bouton              Création de Table pour être en mode 'Création'
Nom du Champ              Type de données          Propriété du champ       Si besoin de plus de 255 caractères,
Num Produit               Texte                    Taille : 6               utiliser le type Mémo (taille illimitée)
Désignation               Texte                    Taille : 60
Prix Ht                   Monétaire                Valide si : >=3
                          (pour afficher €   uros) Message si erreur :Vérifier le minimum (>=3 €        )
Taux Tva                  Numérique                Taille : Réel simple              (Touche F1 pour l’Aide)
 Ici, le Num Produit n'est pas en NuméroAuto       Format : Pourcentage               (%)
 car on veut gérer notre propre Numérotation :     Valeur par défaut : taper 0.196 pour obtenir
 3 lettres pour la marque du produit et                 0,196 (virgule à la place du point)
 3 chiffres pour le rang du produit dans la marque Valide si : 0.196 Ou 0.055
 (ACE002 pour le 2° produit de marque ACER)
                                                   Message si erreur : Vérifier le taux
     Le Prix Ttc est une valeur calculée (Prix Ttc = Prix Ht * (1+Taux Tva)). On ne stocke pas
     dans une Table un champ calculé car on risque l'erreur d'avoir calculé et stocké un PrixTtc sur
     un ancien Prix Ht : exemple
     Prix Ht = 100 ; Prix Ttc = 119.6 puis modif Prix Ht = 95 et Prix Ttc = 119.6 faux car non modifié
     On calculera donc le Prix Ttc (sur les actuels Prix Ht et Taux Tva) chaque fois que l'on en aura
     besoin même si cela prend un peu (si peu) de temps-machine.

                     Règle : La Table stocke des informations de base (non calculées)
Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque
enregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans deux
enregistrements de ce champ sont interdites (pas de doublons: 2 produits ne doivent pas avoir le même
numéro de produit).
Définir une clé primaire sur le champ: Num Produit en sélectionnant ce champ puis barre d’outils
Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Produit : Oui SANS doublon).
Convention personnelle pour Clé primaire : Num + (Nom de table) = Num Produit
On souhaite que la Désignation du produit soit unique, interdire 2 fois Imprimante laser Canon type 1.
On veut donc un index sans doublon (unique) sur le seul champ Désignation
Compléter la description du champ Désignation avec :
Désignation          Texte                  Indexé : Oui sans doublons

Ici, il est inutile de passer par Clic sur Index     car l'index est
ici MONO-Champ.
Par contre, le résultat est bien stocké dans les index :


ATTENTION :
Num Produit            Texte                   Indexé : Oui sans doublons car Clé Primaire
Désignation            Texte                   Indexé : Oui sans doublons sans être Clé primaire
La clé primaire est le champ qui identifie chaque enregistrement de la table, c'est cette information qui
est utilisée dans une autre table pour pointer (référencer) vers la table Produit.
Enregistrer la table : Produit puis Fermer la table :
Remarque : Les noms des tables sont notés au singulier (Client, Produit) sans préfixe Tab Produits
Faire un effort dans le choix des noms des tables pour que le nom corresponde au contenu de la table :
 Les produits Catalogue produit Produits vendus
                                 Visualisation en mode feuille de données
Ouvrir la table Produit par double-clic sur Produit :

                                    Ensat - Informatique Appliquée - Marc Souques                    Page 8
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

 Passer en mode Création par le bouton            (en haut à gauche) de l'onglet Accueil :
 Passer en mode Feuille de données par le même bouton de barre d' outils :                            (en haut à gauche)

 Saisir : (remarque les erreurs volontaires sont en italique et souligné ci-dessous)

     Num Produit    Désignation    Prix Ht       Taux Tva                                             Erreur
    CAN001       Imprimante laser 1 puis 300 19.6%                                        Erreur sur le Prix
                 Canon type 1
    MIC001       Initiation     à         15 20.6% puis 5.5%                              Erreur sur la Tva
                 ACCESS pour       erreur                                                 La tva sur les livres est à 5.5%
erreur           les Nuls                         erreur
       CAN001    Imprimante             1000 19.6%                                        Erreur sur Num Produit
                                                                                          détectée seulement après saisie
                                                                                          de Taux Tva (doublon dans clé
                                                                                          primaire avec le 1° enregistrement) :
                                        erreur                                            modifier ce Num Produit en
                                                                                          CAN002
   EPS001            Imprimante                        75 19.6%                           Erreur sur Désignation
                                                                                          (doublon sur propriété "OUI
                                                                                          sans doublon"), modifier cette
                                                                                          Désignation avec Imprimante
                                                                                          Jet encre Epson série1
 Remarque sur le champ Num Produit : les 3 premières lettres correspondent à la marque du produit.
 CAN pour Canon, EPS pour Epson, MIC pour l'éditeur Microapplication
 Il y a vérification automatique de l’unicité (Unique) de la clé Primaire de Num produit.

 Remarque : les Données saisies sont enregistrées automatiquement (pas besoin d'enregistrer sauf la
 mise en forme ou les définitions des champs des tables).
 Elargir la colonne Désignation (modification de la mise en forme).

 Fermer la table : (l'enregistrement de la mise en forme de la table est proposé)
 Ouvrir la table : elle est triée sur la clé primaire : Num Produit
 Ajouter un enregistrement par ce bouton                                  dans la dernière ligne de la
 table signalée par        (ce symbole sur une ligne vierge indique la position pour ajouter des
 enregistrements) et tester l’erreur sur le taux de TVA:
      CAN003         Imprimante Canon couleur 300        33.33% puis 19.6%
 Supprimer l'enregistrement ci-dessus en le sélectionnant préalablement par la colonne grisée à gauche
 de Num Produit puis Suppr du clavier. Fermer la table :

 3. Créer les Tables Complexes
 Nous allons créer les tables pour gérer les Commandes de Produits faites par les Clients.
 Il y a 2 aspects complexes concernant les Commandes de Produits :
 a) Chaque enregistrement d'une table1 fait référence à au plus 1 seul enregistrement d'une table2.
       - Une Commande      fait référence à au plus     1 seul Client.
 b) Chaque enregistrement d'une table1 fait référence à au plus N enregistrements d'une table2 et
    chaque enregistrement d'une table2 fait référence à au plus N enregistrements d'une table1.
       - Une Commande      fait référence à au plus     N Produits qui sont commandés et
        un Produit         fait référence à au plus     N Commandes où il est commandé.



                                  Ensat - Informatique Appliquée - Marc Souques                                 Page 9
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

A. Deux régles de base pour créer des tables
Si on ne dispose pas d'une analyse des données sous forme de Modèle Conceptuel de Données (MCD)
et Modèle Logique de Données (MLD) , on peut utiliser les règles suivantes directement dans Access.
De manière très simplifiée et limitée , il existe 2 types principaux de relation entre 2 tables :

                            Relation Père - Fils                      et        Relation Frère - Sœur
1) Relation Père - Fils :
                                                                                                   PERE                         FILS
Un Père peut avoir de 0 à N Fils, un Fils peut avoir de 0 à 1 Père.
                                                                                                      x                            x
Pour gérer cette relation, on ajoute dans la table Fils
                                                                                                      x                           x
un champ Ref Père contenant la valeur de l'identification du Père.                                                                x
                                                                                                      x
                             Clé étrangère            Clé primaire                                                                x
                            AVEC doublons             SANS doublon

                                                                                                   Père sans fils ou ayant
                                                                                                    perdu son ou ses fils

                                                                                                                        Fils de père
       Table Fils                                                 Table Père                                             inconnu

Convention perso pour nom Clé étrangère : Ref + (Nom de la table liée) = Ref Père (en italique bleu)
Convention perso pour nom Clé primaire : Num + (Nom de la table) = Num Fils (en gras rouge)
        Demander à voir éventuellement exemple diapositive : "PV et sa Voiture".

2) Relation Frère - Sœ  ur
Un Frère peut avoir de 0 à N Sœ une Sœ peut avoir de 0 à N Frères.
                                  urs,       ur                                                     FRERE                       SOEUR
Pour gérer cette relation, on ajoute une nouvelle table intermédiaire avec                            x                           x
 un champ Ref Frère un champ Ref Soeur D'éventuels champs                                             x
                                                                                                                                  x
 contenant la valeur de contenant la valeur de dépendants de frère                                    x                           x
 l'identification de Frère l'identification de Sœ   ur ET sœ  ur.                                     x                           x

                                              Clé étrangère Clé étrangère
             Clé primaire                    AVEC doublons AVEC doublons                               Clé primaire
            SANS doublon                                                                              SANS doublon




     Table Frère                         Table Croisement : Frère - Sœur                                    Table Sœur




Autre présentation non informatique de la table Croisement Frère - Sœur

A l'aide de ces 2 règles de base, nous allons gérer les Commandes de Produits faites par les Clients.


                                      Ensat - Informatique Appliquée - Marc Souques                                   Page 10
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

B. Etude des Commandes
1) Relation Père – Fils

Un Client            fait référence à au plus             N Commandes.
Une Commande         fait référence à au plus             1 seul Client.


                                                                                                          Convention :
                                                                                                          gras +
                                                                                                          souligné
       Table Commande                                                                                     indique une
                                                                         Table Client                     clé primaire



2) Relation Frère – Sœur

Une Commande         fait référence à au plus             N Produits                    qui sont commandés.
Un Produit           fait référence à au plus             N Commandes                   qui le commandent.




 Table Commande
                                                                                                   Table Produit
                                     Table Croisement : Commande - Produit

On nomme généralement cette table de Croisement en mixant les noms des 2 tables croisées, par
exemple : ComProd ou ProdCom




                               Ensat - Informatique Appliquée - Marc Souques                          Page 11
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

C. Créer la table CommandeEnTete
Un Client    fait référence à au plus plusieurs () Commandes.
Une Commande fait référence à au plus 1 seul Client.
Nous sommes donc dans la règle Père – Fils vue précédemment.
Un Père            fait référence à au plus      plusieurs Fils
Un Fils            fait référence à au plus      1 seul Père

Donc nous gérerons un champ Ref Client dans la table Commande pour pointer vers le champ
Num Client Clé primaire de la table Client.
Ce champ Ref Client est appelé Clé étrangère car il sera relié plus tard à Num Client.




On gère ici la partie fixe de la Commande, le haut de la commande, son En-tête, sans prendre en
compte les produits commandés car ils sont en nombre variable.         Un nombre qui s’incrémente
Nom du Champ              Type de données Propriétés               automatiquement à chaque nouvelle
Num Commande              NuméroAuto                                commande saisie : 1 puis 2 puis 3
Ref Client                Numérique          Taille : Entier long ; PAS de valeur par défaut
(pour futur lien vers Num                    Null interdit : OUI donc saisie obligatoire d'1 valeur de
Client                                       Chaine vide autorisée : NON
de table CLIENT)
                                                  (pour future compatibilité avec Num Client de la table
                                                  Client qui est NuméroAuto donc en Numérique-Entier long)
Date Commande           Date/Heure                Format : Date, abrégé        (jj/mm/aaaa)
                                                  Valeur par défaut : Date( ) (=date du jour)
                                                  Afficher le sélecteur : À certaines dates
Date Echéance           Date/Heure                Format : Date, abrégé                     Aujourd'hui
                                                  Valeur par défaut : Date( ) + 30           + 30 jours
                                                  Afficher le sélecteur : À certaines dates
Payée                   Oui/Non                   Valeur par défaut : Non
Total Commande : NE PAS gérer car ce n'est pas une DONNEE mais un CALCUL
   Remarque : Dans cette table CommandeEnTete, le nom Ref Client est choisi librement.
   Je prends la règle 'Ref'+NomTable liée pour la Clé étrangère mais d'autres solutions sont possibles.
   (Num Client est souvent utilisé mais confusion possible avec le nom et le rôle de Num Client qui
   est clé primaire de la table CLIENT)
Définir la clé primaire sur le champ : Num Commande

Enregistrer la table : CommandeEnTete                Donnée existant dans la clé
                                                     primaire Num Client de la
Passer en mode Feuille de données :                         table Client
Saisir :                                                                                               Table Client
Num Commande Ref Client Date Commande                         Date Echéance              Payée
  1 (Automatique)       3      (saisir une date)              (saisir une date)          Cocher pour Oui
  2 (Automatique)       3           (valider date)                 (valider date)        Rien pour Non
  3 (Automatique)       1           (valider date)            (saisir une date)          Cocher pour Oui

Il y a 3 CommandeEnTete.



                                Ensat - Informatique Appliquée - Marc Souques                         Page 12
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
a) La Commande 1 fait référence à un seul client (le 3) par le champ Ref Client.
Num Commande Ref Client             Date              Date Echéance       Payée
                                    Commande
        1                 3

b) Le Client 3 fait référence à plusieurs Commandes (la 1 et la 2) par le champ Ref Client

Num Commande Ref Client                  Date                   Date Echéance              Payée
                                         Commande
         1                   3
         2                   3
C'est par cette technique que l'on respecte le cahier des charges :
Une Commande fait référence à au plus 1 seul Client.
Un Client    fait référence à au plus plusieurs () Commandes.
Fermer la table CommandeEnTete.

Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire.
                      Gestion de la saisie dans la clé étrangère Ref Client :
Pour le champ Ref Client, pour le moment, la saisie est faite au clavier en tapant manuellement 3 par
exemple.
En réalité, pour une liste de clients comme celle ci-contre,
on ne peut faire référence pour Ref Client de la table CommandeEnTete qu'à 1
des 3 clients identifiés (1, 2, 3) dans la clé primaire Num Client de la table
Client.
Une erreur consisterait pour Ref Client à saisir un numéro 4 qui n'existe pas dans Num Client.
Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES
DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Client par une liste déroulante ne
proposant QUE les Clients qui existent dans la clé primaire Num Client de la table Client.
Pour faciliter le choix du client de la commande, nous présenterons en plus de Num Client, le Nom et le
Prénom du client en classant ces clients par ordre alphabétique des Noms – Prénoms.




Nous pourrons même simplifier la saisie en n'affichant pas le Numéro du Client.




Le champ Ref Client a le rôle technique de gérer le lien entre les 2
tables. Il a ici un nom peu compréhensible pour l'utilisateur.
La propriété Légende des champs permet de gérer un nom de
substitution qui s'affichera à la place de Ref Client.
Nous n'utilisons pas cette procédure pour le moment pour ne pas compliquer la compréhension.

Si vous relisez ce polycopié pour faire un projet Access, il faut traiter la gestion de ces listes
déroulantes de clés étrangères dès la création des Tables .


                                  Ensat - Informatique Appliquée - Marc Souques                    Page 13
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

D. Créer la table CommandeLigneProduit
Une Commande     fait référence à au plus plusieurs Produits (commandés).
Un Produit       fait référence à au plus plusieurs Commandes.(où il est commandé)
Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée.
Nous sommes donc dans la règle Frère – Sœ vue précédemment.
                                            ur
Un Frère           fait référence à au plus    plusieurs Sœ urs
Une Sœ ur          fait référence à au plus    plusieurs Frères
Donc, alors que les tables CommandeEnTête et Produit sont déjà créées, nous allons créer une nouvelle
table intermédiaire entre ces 2 tables pour assurer le lien plusieurs à plusieurs (N / N).

Donc nous gérerons dans cette table un champ Ref Commande pour pointer vers le champ
Num Commande Clé primaire de la table Commande.
Ce champ Ref Commande est appelé Clé étrangère car il sera relié avec le champ Num Commande.

Donc nous gérerons dans cette table un champ Ref Produit pour pointer vers le champ
Num Produit Clé primaire de la table Produit.
Ce champ Ref Produit est appelé Clé étrangère car il sera relié avec le champ Num Produit.




On gère ici la structure de la table pour un Produit commandé d' une CommandeEnTete.
             C'est la table de croisement entre la table CommandeEnTete et la table Produit.
Nom du Champ                 Type de           Propriétés
                             données


Ref Commande                Numérique              Taille : Entier long ;                 PAS de valeur par défaut
       (pour lien vers                             (pour future compatibilité avec Num Commande de la table
      Num Commande                                 CommandeEnTete qui est en NuméroAuto donc en
 de table CommandeEnTete)                           Numérique-Entier long),
                                                   Null interdit : OUI ; Chaine vide autorisée : NON
Ref Produit                 Texte                  Taille : 6 ; PAS de valeur par défaut ,
       (pour lien vers                             (pour future compatibilité avec Num Produit de la table
       Num Produit                                 Produit qui est Texte de longueur 6)
      de table Produit)                           Null interdit : OUI ; Chaine vide autorisée : NON
Quantité                      Numérique           Taille : Réel simple (au cas où on vendrait 1 boite et
(quantité commandée d'un                          demie de 10 DVD = 15 DVD = 1,5 boite)
produit d'une commande)                           Valeur par défaut : 1
Ici, la clé primaire n'est pas mono-champ. C'est le couple 1 - CAN001 qui identifie
un Produit commandé (CAN001) dans le cadre d'une Commande (1).
Définir une clé primaire : sélectionner les 2 premiers
champs Ref Commande, Ref Produit par un glissé à la
souris (dans la colonne de gauche) et les définir par le bouton
Clé primaire       comme clé primaire composée :
Attention :       Ref Commande et Ref Produit ne sont pas individuellement clé primaire
mais le couple Ref Commande + Ref Produit est clé primaire.
                                    Il n'y a qu'1 Clé primaire par Table.


                               Ensat - Informatique Appliquée - Marc Souques                            Page 14
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Enregistrer la table : CommandeLigneProduit                                                  Donnée existant dans la clé
(Ce nom intégre Commande et Produit : les 2 tables croisées)                                 primaire Num Produit de la
Passer en mode Feuille de données :                                                                table Produit

Saisir :
Ref Commande      Ref Produit    Quantité
         1        CAN001                4
       1             EPS001             2                      Table Produit
       2          CAN001                1
       2             CAN002             3
       2             MIC001             5
            Table CommandeLigneProduit
Nous avons donc 5 Produits commandées dans CommandeLigneProduit répartis sur 2 Commandes.
La Commande 1 (Ref Commande) contient 2 Produits, CAN001 et EPS001
La Commande 2 (Ref Commande) contient 3 Produits, CAN001, CAN002 et MIC001
Le Produit CAN001 (Ref Produit) a été commandé 2 fois, dans les Commandes 1 et 2.
Un produit commandé est identifié par la clé primaire composite Ref Commande - Ref Produit .
Le couple 1 - CAN001 identifie la commande du produit CAN001 dans la commande 1.

Il est impossible de ressaisir ce couple 1 - CAN001 sinon Doublon sur clé primaire.
Fermer la table CommandeEnTete
Fermer Access et donc la base essai (croix en haut à droite)

Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire.
       Gestion de la saisie dans les clés étrangères Ref Commande et Ref Produit :
Pour le champ Ref Produit, pour le moment, la saisie est faite au clavier en tapant manuellement
CAN001 par exemple.

En réalité, pour une liste de produit comme celle ci-contre,
on ne peut faire référence pour Ref Produit de la table CommandeLigneProduit
qu'à 1 des n Produits identifiés (ACE001, ACE002, CAN001, …) dans la clé
primaire Num Produit de la table Produit.
Une erreur consisterait pour Ref Produit à saisir ABC001 qui n'existe pas dans Num Produit.
Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES
DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Produit par une liste déroulante ne
proposant QUE les Produits qui existent dans la clé primaire Num Produit de la table Produit.
Pour faciliter le choix du produit commandé, nous
présenterons en plus de Num Produit, la
Désignation du produit en classant ces désignations
de produits par ordre alphabétique.


    Nous pourrons même simplifier la saisie en
      n'affichant pas le Numéro du Produit.

Si vous relisez ce polycopié pour faire un projet
Access, il faut traiter la gestion de ces listes
déroulantes de clés étrangères dès la création des
Tables.
Faire de même pour l'autre clé étrangère Ref Commande de cette table.                                      FIN TD1


                                   Ensat - Informatique Appliquée - Marc Souques                            Page 15
- ACCESS 2007 – 2010 - Travail dirigé Facturation –




E. Conventions de nommage dans les Tables

- Pour les noms des champs :
J'ai choisi d'utiliser les possibilités d'Access avec espaces et accents car ces noms sont affichés à
l'utilisateur de l'application.

Je mets une majuscule à la première lettre de chacun des mots composant le Champ.

Exemple :    Date Echéance      avec 2 majuscules, 1 espace entre Date et Echéance et 1 accent.
Remarque : On peut aussi gérer des noms sans espace et sans accent (DateEcheance) pour faciliter
l'écriture de ces noms en programmation VBA et gérer dans ce cas la propriété du champ Légende qui
propose un nom de substitution (avec espaces et accents : Date d'Echéance) pour les affichages dans les
formulaires


- Pour les noms des tables :
J'ai choisi de NE PAS utiliser les possibilités d'espace et d'accent car ces noms NE SONT PAS affichés
à l'utilisateur de l'application.

Je mets une majuscule à la première lettre de chacun des mots composant la Table.
Je note les noms de table au singulier car une table définit la structure pour 1 enregistrement type.

Exemple :    CommandeEnTete        avec 2 majuscules, 0 espace, 0 accent et au singulier.



F. Importer des données d'Excel dans Access
Le menu Données Externes permet d'importer des données d'origines diverses vers Access.
Attention : la structuration des données dans Excel est incompatible avec celle d'Access.
On peut récupérer certaines informations d'Excel dans Access mais un travail manuel est ensuite
nécessaire pour restructurer ces informations suivant le modèle Relationnel utilisé par Access.

Le transfert Excel  Access est souvent difficile.


G. Exporter des données d'Access vers Excel
Le menu Données Externes permet d'exporter des données vers diverses destinations comme Excel.
Remarque : la structuration des données dans Excel est incompatible avec celle d'Access.
On peut exporter des informations d'Access vers Excel.

Le transfert Access  Excel est généralement facile.




                                Ensat - Informatique Appliquée - Marc Souques               Page 16
- ACCESS 2007 – 2010 - Travail dirigé Facturation –


4. Sécurité de l'utilisation de l'application
Par défaut, Access est configuré comme ci-dessous dans Bouton         Office (Fichier dans version
2010), Options Access, Centre de gestion de la confidentialité, Paramètres de centre de gestion de
la confidentialité :




Donc, à l'ouverture d'une application Access, vous pouvez voir ceci :


En effet, une application Access (comme Excel, Word et Powerpoint) peut avoir un contenu (programme
VBA ou autres techniques) potentiellement dangereux.

Donc, ici, du contenu est désactivé. Pour gérer cet aspect, plusieurs solutions :
   1. Garder la configuration ci-dessus et cliquer
       à chaque ouverture de la base sur le bouton Option…
       puis choisir Activer le contenu si vous faite confiance
       à l'origine du fichier.
   2. Modifier la configuration ci-dessus en activant l'option
       Activer toutes les macros. C'est non recommandé et
       potentiellement dangereux car ainsi, pour toutes les
       applications, du code malsain peut être exécuté.
   3. Garder la configuration ci-dessus pour le Paramètre des macros à Désactivé mais définir un
       dossier où vous rangerez les applications de confiance (les vôtres par exemple). Dans la fenêtre
       du Centre de gestion de la confidentialité, Emplacements approuvés, ajouter un nouvel
       emplacement pour un dossier (et éventuellement ses sous-dossiers) pour obtenir un résultat de ce
       type. Attention, cette opération peut poser problème sur un disque d’un réseau local protégé.




C'est cette dernière solution qui est recommandée et que vous mettez en place.
Valider ces paramètres et fermer Access.

-Sous l'application Explorateur de fichiers     :
        - Supprimer éventuellement la base : essai.accdb
        - Copier Fac01a2007.accdb depuis le dossier de correction vers votre dossier de travail.
- Ouvrir la base : Fac01a2007.accdb par double clic (la votre , pas celle donnée en correction)
Cette application a les mêmes définitions que ci-dessus mais avec plus de données saisies dans les
tables.


                               Ensat - Informatique Appliquée - Marc Souques            Page 17
- ACCESS 2007 – 2010 - Travail dirigé Facturation –


5. Utiliser les tables en mode Interactif
A. Rechercher des données
Ouvrir Table Client :
Positionner le curseur sur le champ Nom et sur l’enregistrement 1:
Clic sur le bouton de Recherche      (Jumelles de l'onglet Accueil) : TERIEUR puis bouton Suivant
1) Caractères génériques * ? #
a) Astérisque : * (remplace une chaîne de caractères quelconque)
Positionner le curseur sur le champ Nom et sur l’enregistrement 1:
Rechercher : BON*
Rechercher :           *R
b) Point d'interrogation : ? (remplace un seul caractère quelconque)
Positionner le curseur sur le champ Nom Client et sur l’enregistrement 1:
Rechercher :           ??R
c) Dièse : # (remplace un seul caractère-chiffre)
Positionner le curseur sur le champ Adresse et sur l’enregistrement 1:
Rechercher :           6#*
Rechercher :                   6* (comprendre la différence avec 6#*)                    Ce que vous cherchez 'bd'
B. Remplacer des données                                                                 est ou pas une sous partie
                                                                                         du 'champ entier' ?
Onglet Accueil > bouton de Recherche           > Remplacer...
Positionner le curseur sur le champ Adresse et sur l’enregistrement 1:
Rechercher :           bd      (attention : rechercher dans "champ entier" ou autre manière ?)
Remplacer par:                 boulevard
       a) en manuel : bouton Suivant pour chercher et bouton Remplacer pour modifier
       b) en automatique : bouton Remplacer tout

Remettre bd à la place de boulevard
C. Tester les boutons…
1) Les 5 boutons de déplacement d’enregistrements en bas d’écran




Premier , Précédent, Rang de l'enregistrement courant                , Suivant, Dernier, Nouvel enregistrement

2) Les 2 boutons de tri croissant et décroissant




                                Ensat - Informatique Appliquée - Marc Souques                        Page 18
- ACCESS 2007 – 2010 - Travail dirigé Facturation –



6. Définir les relations entre les tables
Nous avons maintenant 4 tables, préparées pour être liées les unes aux autres. Avant de tirer les
Relations, il faut vérifier que toutes les tables sont fermées et non utilisées par des formulaires ou
requêtes.
Accéder à la fenêtre Relation :
Onglet Outils de base de données

/ Relations      .
                                       Ci-dessus : travail à faire = lier les tables par des Relations ou Jointures

Ajouter (si besoin par bouton +Afficher la table ) les 4 tables: Client, CommandeEnTete,
CommandeLigneProduit et Produit et fermer cette fenêtre d'ajout.

1° lien :
  1 Client (Père) peut avoir N CommandeEnTete (Fils) et
  1 CommandeEnTete (Fils) est liée à 1 seul Client (Père)
  Définir des Liens ( appelés aussi Jointures) :
  * Glisser Num Client de Client (clé primaire) sur
                Ref Client de CommandeEnTete (clé étrangère)
. Boîte de dialogue :
- cocher Appliquer Intégrité Référentielle,
     (vérifications des données des liens, voir TEST plus loin)
- Ne pas cocher 'Mettre à jour en cascade'
- Ne pas cocher 'Effacer en cascade'
- Type de Jointure (consulter seulement)                Créer

                               EGAUX
                                                                              Un-à-plusieurs : c'est le cas classique

                                                                              Un-à-un : erreur probable



Remarque : le 1 et le ∞se placent automatiquement sur le lien,
Le 1 à coté du champ clé primaire car ce champ est sans doublon,
Le ∞à coté du champ clé étrangère car ce champ est doublons possibles.
Pour une valeur de Num Client, on peut trouver N (∞ Commandes.
                                                      )
Pour une valeur de Ref Client, on ne peut trouver qu'1 Client.

2° lien :
1 CommandeEnTete peut avoir N CommandeLigneProduit et
1 CommandeLigneProduit est liée à 1 seule CommandeEnTete
  Définir des Liens ( appelés aussi Jointures) :
* Glisser Num Commande de CommandeEnTete (clé primaire) sur
            Ref Commande de CommandeLigneProduit (clé étrangère)
Remarque : Ref Commande n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié
d'une clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit
        . Boîte de dialogue
- cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin)
- Relation 1 à Plusieurs       -Pas de Mise à jour et pas d'Effacement en cascade
- Type de Jointure (consulter seulement)                                 Créer



                               Ensat - Informatique Appliquée - Marc Souques                          Page 19
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
3° lien :
1 Produit peut avoir N CommandeLigneProduit et
1 CommandeLigneProduit est liée à 1 seul Produit
 Définir des Liens ( appelés aussi Jointures) :
* Glisser       Num Produit de Produit (clé primaire) sur
                Ref Produit de CommandeLigneProduit (clé étrangère)
Remarque : Ref Produit n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié d'une
clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit
        . Boîte de dialogue
- cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin )
- Relation 1 à Plusieurs-Pas de Mise à jour et pas d' Effacement en cascade
- Type de Jointure (consulter seulement)                                        Créer


      Convention personnelle (à garder) pour nommer les champs des tables:
   Clé primaire mono-champ :                                     Numxx               (xx pour nom de cette table)
   Clé étrangère           :                                     Refxx               (xx pour nom de la table liée)

Remarque : On trouvera ailleurs que dans notre établissement des liens (jointures, relations) entre
 clé primaire et clé étrangère comme ceci par exemple :
Numxx           clé primaire de table-père et        Numxx       clé étrangère de table-fils  ou
Codexx          clé primaire de table-père et        Codexx      clé étrangère de table-fils  ou
Idxx            clé primaire de table-père et        Idxx        clé étrangère de table-fils  ou
Refxx           clé primaire de table-père et        Refxx       clé étrangère de table-fils.
Soit le même nom de champ pour la clé Primaire et Etrangère !!!
Je n'adhère pas, à titre pédagogique, à cette manière de nommer 2 choses différentes avec le même nom
mais il faut savoir que cette manière de nommer existe même si elle est ambigüe.
Cela vient en partie du fait qu'il existe des logiciels (PowerAMC, WinDesign) qui, à partir d'un MCD, génèrent
automatiquement un MLD Relationnel et que ces logiciels reprennent (faute de règle) automatiquement le nom de
la clé primaire du MCD (l'identifiant pour être exact) pour créer la clé étrangère.

Comme il n'y a pas de règle pour nommer ces 2 types de clés, chacun fait avec sa règle.
Vous trouverez donc toutes les combinaisons possibles de clé Primaire et Etrangère, l'essentiel est de
bien comprendre le rôle différent de chaque clé :

La Clé primaire :
       - identifie chaque enregistrement d'une table.
       - est SANS doublon.
       - est souvent de type numérique et même Numauto
                                  (pour générer AUTOMATIQUEMENT un numéro).
        - est définie comme Primaire car clic sur
La Clé étrangère :
        - pointe vers 1 enregistrement d'une autre table.
        - est AVEC doublon possible (2 fois la valeur 1 car 2 Commandes peuvent pointer vers le même
Num Client 1).
        - est d'un type qui dépend obligatoirement du type de la clé primaire pointée, JAMAIS Numauto
car l'objectif est que l'utilisateur choisisse MANUELLEMENT (ou par liste déroulante) un
enregistrement de l'autre table.
        - est définie comme Etrangère seulement parce que c'est elle qui est liée à la clé primaire de
l'autre table.

                     Nous nommerons donc différemment clé primaire et clé étrangère.


                                    Ensat - Informatique Appliquée - Marc Souques                           Page 20
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

A. Importance des relations dans un SGBD Relationnel
Access est un SGBD (Système de Gestion de Base de Données) Relationnel.
 Tout le fonctionnement d'une application sous Access est basé sur les Relations entre les Tables.
La définition des Tables et Relations représente les FONDATIONS de l'application sur lesquelles il
'suffira' ensuite de créer d'autres objets bénéficiant de ces Relations.
En France, la méthode la plus utilisée pour créer ces relations est la méthode Merise qui ne sera pas
abordée ici. La méthode UML prend peu à peu le relais de la méthode Merise avec les mêmes principes
concernant la définition des Données.
    Rater la définition des Tables et Relations condamne l'application à l'échec !!!
B. Des régles dans les relations
Règle 1 :
L'un des 2 champs du lien est obligatoirement une clé primaire (Num xxx dans mes conventions).
L'autre champ est obligatoirement une clé étrangère (Ref xxx dans mes conventions)
                                  donc, jamais 2 clés primaires reliées :
                 Num Commande (1) n’a aucun rapport avec Num Produit (CAN001)
Attention : certaines clés étrangères ont le symbole car elles sont sous partie d'une clé primaire
composée de plusieurs champs : exemple : Ref Produit

Règle 2 :
Pour qu’une relation (lien ou jointure) puisse être réalisée, les 2 champs liés doivent contenir des
données de même type et même longueur.
           Clé primaire (Num xxx)                                             Clé étrangère (Ref xxx)
      (NumAuto) donc du Numérique entier                                      Numérique, Entier long
              Texte, Longueur 6                                                 Texte, Longueur 6
           Numérique, Entier long                                             Numérique, Entier long

Règle 3 :

Les valeurs du champ Ref xxx de la table1 doivent pouvoir être            égales …
 au champ Num xxx de la table2.                         =
               Clé primaire (Num xxx)                               Clé étrangère (Ref xxx)
              Num Client de Client = 3                   Ref Client de CommandeEnTete =         3
        Num Produit de Produit = CAN001                Ref Produit de CommandeLigneProduit = CAN001
Etablir un lien entre Num Client (1, 2, 3, 4,…)   et Ref Produit (CAN001, EPS001, CAN002, …)
n'a AUCUN sens car les valeurs ne seront jamais égales (=).
Pour modifier ou Supprimer des relations : (Clic droit sur le trait 1-- )
Enregistrer la mise en forme des relations et Fermer cette fenêtre Relation :

                                     IMPORTANT :
Le travail réalisé par Accès au niveau des Relations consiste :
                                                            Voir
- à rechercher à partir d'une valeur d'une clé étrangère  exemples
 l'unique (1) valeur égale (=) dans la clé primaire liée. en bas de
- à rechercher à partir d'une valeur d'une clé primaire   page 5 du
les (N) valeurs égales (=) dans la clé étrangère liée.    Chapitre I



                               Ensat - Informatique Appliquée - Marc Souques                        Page 21
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

C. Tester l'Intégrité Référentielle des Relations
L'Intégrité Référentielle est la vérification des données présentes dans la clé primaire et
la clé étrangère d'une Relation suite à une opération de saisie, modification ou suppression.

1) Ouvrir la table CommandeEnTete
Tenter de saisir dans Ref client de la table CommandeEnTete
une valeur n'existant pas dans Num Client de la table Client : 999 999 (et valider l'enregistrement)


    erreur car, dans la table Fils CommandeEnTete, saisir dans Ref Client la valeur 999 999 alors
que dans la clé primaire Num Client de la table Père "Client" la valeur 999 999 n'existe pas, cela n'est
pas valide.

            Un Fils ne peut PAS faire référence à un Père dont la valeur ne peut être retrouvée
                                             dans la table Père.
       Remarque : un fils peut ne pas faire référence à un père si on l'autorise, une CommandeEnTete
pourrait ne pas faire référence à un client (pas de saisie dans Ref Client) mais nous l'avons interdit dans
cette application dans le champ Ref Client avec la propriété Null interdit (vide interdit) : OUI et Chaine
vide autorisé : NON donc ici la saisie est obligatoire.

2) Ouvrir la table Produit
Tenter de supprimer de la table Produit le produit CAN001 (clic dans la marge et bouton Suppr )
alors que ce produit existe (est commandé) dans la table CommandeLigneProduit dans le
champ Ref Produit : CAN001.


     erreur car supprimer dans la table Père une clé primaire CAN001 alors qu'au moins un
enregistrement de la table Fils CommandeLigneProduit y fait référence par la clé étrangère Ref Produit
est une suppression non valide.

  Un Père ne peut PAS être supprimé s'il a encore au moins 1 Fils qui fait référence à lui même.

      Dans les cas 1) et 2), on ne veut pas d'un Fils pointant vers un Père NON "trouvable".

                        Voila ce que l'intégrité référentielle doit éviter :




                                                                Null interdit (vide interdit) : NON donc saisie facultative
                                                                             Fils de Père inconnu est autorisé ici.

                      Utiliser le fichier Fac02a2007.accdb pour la suite.
               (Demander à Voir le diaporama "PV                             et sa Voiture")

                                Ensat - Informatique Appliquée - Marc Souques                             Page 22
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

7. Résumé des Tables
    4 tables avec : Nom des champs, Clé primaire, Type de données et Propriétés de
       chaque champ (ici propriétés du champ fléché).




 Plus tard, "Liste        de   choix"       avec
 liste déroulante




    Des Relations entre les tables avec Intégrité référentielle




    Des Données saisies
Remarque : Créer une application gérant des personnes nécessite l'autorisation ou la déclaration à la
CNIL (Commission Nationale Informatique et Liberté) :
http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/

                                Ensat - Informatique Appliquée - Marc Souques             Page 23
- ACCESS 2007 – 2010 - Travail dirigé Facturation –



Ch3. Les requêtes de base
La requête permet de faire des TRAITEMENTS sur les DONNEES des TABLES. Il existe plusieurs
types de Requête : la plus simple est celle qui sélectionne des enregistrements sur des critères.
Possibilité de faire des requêtes qui ajoutent, modifient ou suppriment des enregistrements.

1. Requête sélection
Elle permet de sélectionner,       trier, calculer              des enregistrements sur une ou plusieurs tables
reliées entre elles.
A. Requête simple sur une seule table
Créer une Nouvelle requête, onglet Créer, bouton Création de requête basée sur la table Client.
1) Requête "R01 Client Ou"
Question : "Liste des clients avec visualisation des champs Nom, Prénom, Date Entrée et Ville, par
ordre alphabétique de leur nom puis prénom, habitant Clamart OU nommés TERIEUR "
Saisir les noms des champs ci-dessous par double-clic dans la table affichée en haut de l’écran.
   Champ: Nom                   Prénom                Date Entrée        Ville
     Table: Client              Client                Client             Client
         Tri: Croissant         Croissant
  Afficher:           X                  X                   X                  X
   Critères:                                                             clamart
                                  Ou = entre 2 lignes
         Ou: TERIEUR              de colonnes quelconques
Pour une saisie dans un champ de type TEXTE, les " sont ajoutés comme délimiteur "TERIEUR"

Exécuter la requête (Afficher les résultats) par le bouton                                 puis
revenir en mode création (Définition de la requête en tableau) par le bouton               puis
passer en mode SQL (Définition de la requête en langage SQL = Structured Query Langage) par clic
sur Affichage sous              puis par le bouton

          SELECT Client.Nom, Client.Prénom, Client.[Date Entrée], Client.Ville
          FROM   Client
          WHERE (Client.Nom = "TERIEUR") OR (Client.Ville = "CLAMART")
          ORDER BY Client.Nom, Client.Prénom ;

SQL est un langage Standard pour tous les Systèmes de Gestion de Bases de Données pour créer,
interroger et manipuler les Bases de Données (BD). La commande de base permet la
Sélection de Champs de Tables où des conditions sont requises, ordonnés par des critères de tri.

 SELECT liste de champs FROM tables WHERE conditions de sélection ORDER BY critères de tri

Dans Access, dans un premier temps, nous n'aurons pas besoin de la syntaxe SQL pour créer une requête
car nous bénéficions du mode Création de la requête sous forme de tableau interactif.

Si vous souhaitez vous formez au langage SQL, je vous propose mon Polycopié à demander :
                                        SQL pour SGBD.pdf

Passer en mode Création :
Enregistrer la requête : R01 Client Ou et fermer cette requête.


                               Ensat - Informatique Appliquée - Marc Souques                    Page 24
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

2) Requête "R02 Client Et"
Question : "Liste des clients nommés TERIEUR et habitant CLAMART"
   Champ: Nom                    Ville                           Ville
     Table: Client               Client                          Client
        Tri:
  Afficher:          X                  X                        X
   Critères: TERIEUR             CLAMART        Différence entre
        Ou:                                     ces 2 lignes     CLAMART

Exécuter la requête :                                           Et = entre 2 colonnes
                                                                de la même ligne
Passer en mode Création :
Enregistrer la requête : R02 Client Et et fermer cette requête.


3) Requête "R03 Client Entre"
Question : "Liste décroissante des noms des clients inscrits entre le 15/4/2009 et le 1/5/2009"

   Champ: Nom                     Date Entrée
    Table: Client                 Client
       Tri: Décroissant
  Afficher:        X                                X
  Critères:                       entre 15/4/2009 et 1/5/2009

Pour une saisie dans un champ de type DATE, les # sont ajoutés automatiquement
comme délimiteur de date= #15/04/2009#
Opérateurs de comparaison : (faute d’opérateur choisi, c’est l’opérateur = qui est utilisé par défaut)
       = , > , < , >= , <= , < > (différent), Comme (comparaison avec caractères joker ci-dessous)
Possibilité d'utiliser les caractères Jokers vus précédemment (pour les champs de type Texte) :
       * , ? , # avec l'opérateur Comme pour interpréter ces 'Jokers'
Exécuter la requête, Passer en mode Création :
Enregistrer la requête : R03 Client Entre et fermer cette requête.


4) Requête "R04 Client Comme"
Question : "Recherche des clients dont le Nom commence par la lettre T et inscrits après le 10/4/ de
l'année 2009. Afficher aussi la ville "
    Champ: Nom                    Date Entrée      Ville
     Table: Client                Client           Client
        Tri:
   Afficher:          X                  X                 X
   Critères: T*                   >10/04/2009                       ATTENTION :
         Ou:                                                Ici, la saisie de "T*" génère
                                                       automatiquement "Comme T*" mais
                                                              parfois vous devrez saisir
                                                            manuellement le Comme
                                                              pour utiliser * ? ou #
Exécuter la requête, Passer en mode Création
Possibilités de dimensionner les colonnes, déplacer une colonne, insérer une colonne, insérer une ligne
de critères, supprimer une colonne.
Enregistrer la requête : R Client Comme. Fermer la fenêtre des requêtes :
Exécuter la requête R Client Comme.



                                 Ensat - Informatique Appliquée - Marc Souques            Page 25
- ACCESS 2007 – 2010 - Travail dirigé Facturation –
5) Exercices à faire
                                  A FAIRE…1 : nommer la requête R05
Question : "Recherche des produits dont
[le Prix est inférieur à 500 €et dont la Désignation commence par "imp" (en minuscule ou majuscule)]
ou bien [dont le taux de TVA est supérieur ou égal à 15% (0.15) et dont le Num Produit a un "A" en 2
ième
     position et un "0" (zéro) en 5 ième position
Penser à utiliser l’opérateur Comme " " si vous utilisez des caractères ?, *, #.
 Classer par désignation. "




                              A FAIRE…2 : nommer la requête R06
Question : "Recherche des clients dont
[la Date d’entrée est postérieure au 15 Avril 2009 et habitant le département             93] ou bien
 [des Toulousains prénommés Jean].
              Classer par Nom. "




                                 A FAIRE…3 : nommer la requête R07
Question : "Recherche des clients dont
[la Date d’entrée est Mai (5)] et qui ne sont pas toulousain.




6) Requête "R08 Commande Mono Table "
Question : "Recherche, dans la seule table CommandeEnTete, des Commandes des clients 3, 6 et 34
dont les commandes ne sont pas payées.
 Afficher tous les champs, trier par client."




                                     « A vous d'essayer... »

Commentaire :
Les résultats ne font apparaître aucune des informations du client (nom, prénom, …) hors mis le numéro.
Ces données sont dans les tables Client.
Nous allons donc faire des requêtes multi-table pour visualiser les informations client depuis une
commande.




                               Ensat - Informatique Appliquée - Marc Souques            Page 26
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

B. Requête multitable simple avec Relation
1) Requête "R09 Commande et son Client"
Question : " Liste des Commandes (seulement l'en tête) avec détail de son Nom et Prénom Client."

Nous avons lié les Clients et les Commandes dans la fenêtre relation.
Ce lien peut être utilisé dans 2 sens :
- Pour 1 Commande,             j'obtiens  son Unique Client
- Pour 1 Client,               j'obtiens  ses N (∞ Commandes.
                                                    )

Définir une requête basée sur les 2 tables CommandeEnTete et Client avec les champs suivants.




                                                                          =


                                                                               =




Ce résultat affiche les Commandes pour lesquelles Ref Client = Num Client
Voir le mode SQL de la requête : SELECT [Num Commande], [Date Commande], [Date Echéance],
[Ref Client], [Num Client], Nom, Prénom FROM Client INNER JOIN CommandeEnTete
       ON Client.[Num Client] = CommandeEnTete.[Ref Client];
                                                                            Clé primaire
               Clé étrangère
              AVEC doublons                                                 SANS doublon
                                                                            de table "Père"
               de table "Fils"




Attention : Toutes les commandes peuvent ne pas être affichées. Si …
le champ Ref Client de CommandeEnTete est vide, Access ne trouve pas un Num Client avec contenu
vide EGAL (=) car une clé primaire (Num Client ) ne peut être vide.
Ici, toutes les commandes sont affichées car le champ Ref Client est
en Null interdit = OUI et Chaine vide autorisée = NON donc saisie obligatoire et jamais effacé.

 Dans une relation Père - Fils, les Fils pointant vers aucun Père (pas de saisie) ne sont pas affichés
         dans une requête basée sur les 2 tables liées. - Ce sont des Fils de Père inconnu -
Ce Problème peut être géré en modifiant le type jointure sur la
Relation Clé primaire - Clé Etrangère.
Nous ne le verrons pas pour le moment.



                                 Ensat - Informatique Appliquée - Marc Souques                Page 27
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

2) Requête "R10 Client et ses Commandes"                                                        Demander à voir le
Question : " Liste des Clients avec leurs Commandes (seulement l'en tête)".                     Formulaire Client et
                                                                                                ses commandes FP
Nous avons lié les Clients et les Commandes dans la fenêtre relation.
Ce lien peut être utilisé dans 2 sens :
Pour 1 Client,           j'obtiens      ses N (∞ Commandes.
                                                )
Pour 1 Commande, j'obtiens              son Unique Client

Définir une requête basée sur les 2 tables Client et CommandeEnTete avec les champs suivants.




                                                    =


                                                         =




Ce résultat affiche les Clients avec Num Client = Ref Client
Voir le mode SQL de la requête : SELECT Nom, Prénom, [Num Client], [Ref Client], [Num
Commande], [Date Commande], [Date Echéance] FROM Client INNER JOIN CommandeEnTete
        ON Client.[Num Client] = CommandeEnTete.[Ref Client];
    Clé primaire
   SANS doublon                                                                      Clé étrangère
       "Père"                                                                       AVEC doublons
                                                                                         "Fils"




Attention : Tous les clients peuvent ne pas être affichées. Si …
certaines valeurs de Num Client ne sont pas saisies dans le champ Ref Client de CommandeEnTete,
Access ne trouve pas l'égalité clé primaire = clé étrangère.
Ici, le client 2 n'est pas affiché car aucun enregistrement de Ref Client ne contient la valeur 2.

Par contre, le client 3 DURAND est affiché plusieurs fois car plusieurs enregistrements du champ
Ref Client contiennent la valeur 3. DURAND possède N commandes : la 1 et la 2.

  Dans une relation Père - Fils, les Pères n'ayant aucun Fils pointant sur eux ne sont pas affichés
        dans une requête basée sur les 2 tables liées. Ce sont des Pères 'potentiels' sans Fils.
Ce Problème peut être géré en modifiant le Type
jointure sur la Relation Clé primaire - Clé Etrangère.
Nous ne le verrons pas pour le moment.


                               Ensat - Informatique Appliquée - Marc Souques                            Page 28
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

C. Requête multitable avec calcul par enregistrement
1) Requête "R11 Produits commandés et calcul"
Question : " Liste des Produits commandés dans les Commandes avec calcul Total HT à payer (prix
HT* quantité), Montant de la TVA et Montant TTC de la ligne de commande éventuellement remisé".
a) Gérer tables et champs de table
On peut créer une requête avec les 4 tables liées ( = ) et les champs suivants.
                          =                                         =                     =




Mais il n'est pas obligatoire de présenter les paires de champs liés. Simplifier.




On simplifie encore (pour faire de la place sur ce document pour les futurs calculs).




Enregistrer : R11 Produits commandées et calculs (Enregistrement OBLIGATOIRE pour la suite)



                                 Ensat - Informatique Appliquée - Marc Souques                Page 29
- ACCESS 2007 – 2010 - Travail dirigé Facturation –

b) Gérer les colonnes de calcul
Objectif : Ajouter les 4 calculs




Objectif :     Ajouter dans une colonne vierge de la requête un champ calculé -
Remarque : Il n’y a pas de différence dans les noms de champ entre minuscule et majuscule !
- Calcul de la première colonne calculée

Utilisation du générateur d’expression pour champ calculé                       ( voir l’enseignant pour explications)
    Nom de la colonne
     librement choisi

        Total HT :      [prix Ht] * [Quantité]
                                                                                            A prendre dans le générateur, sur la
    Saisie Clavier                                                                                   première ligne
                         Le : sépare le nom de la colonne (à gauche)
Exécuter:                                                                                  R11 Produits commandés et calculs
                         du calcul (à droite)


Remarque: le générateur d'expression        ne présente dans sa fenêtre QUE les colonnes de la requête
enregistrées sur disque et non pas celles qui sont affichées à l'écran donc, avant chaque
utilisation du générateur, il faut enregistrer la requête.

- Calcul de la deuxième et troisième colonne calculée
Utilisation du générateur d’expression pour champ calculé   :
Donc Enregistrer (cela pour enregistrer le précédent champ calculé Total HT dont on a besoin ci-
dessous pour les calculs de la TVA)
Dans l'expression ci-dessous, seul Total TVA : est saisi au clavier.
[Total HT] est pris dans une des colonnes de la requête courante par le générateur d'expression.
[Produit] ! [Taux Tva] n'étant pas une des colonnes de la requête courante du générateur d'expression,
il faut aller chercher, grâce au générateur d'expression, ce champ dans la rubrique Tables (double-clic),
rubrique Produit .
                                                          A prendre dans le générateur, dans +Tables, Produit, Taux Tva car ce
                                                             champ n’est pas présent dans les colonnes de la requête courante.


        Total TVA : [Total HT] * [Produit] ! [Taux TVA]
Ici, on a le droit d'utiliser la table Produit car elle est présente en haut de requête dans la liste des tables.
     Il est INTERDIT d'utiliser des Tables ou Requêtes NON PRESENTES en haut de requête.
Remarque : ########## signifie que la colonne n’est pas assez large pour afficher le résultat :
élargissez la colonne à la souris comme dans Excel.
Enregistrer (pour enregistrer le nouveau champ calculé Total TVA pour pouvoir l'utiliser dans le
générateur dans l'expression suivante ci-dessous)
       Total TTC : [Total HT] + [Total TVA]
Exécuter, Enregistrer, Consulter la syntaxe SQL (par le bouton Affichage en haut à gauche).
Remarque : pour visualiser en entier le contenu d'une cellule de requête : Touche MAJ + F2


                                  Ensat - Informatique Appliquée - Marc Souques                                  Page 30
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation
Polycop td access 2007  facturation

Contenu connexe

Tendances

Comptabilité générale des entreprises marocaines
Comptabilité générale des entreprises marocainesComptabilité générale des entreprises marocaines
Comptabilité générale des entreprises marocaines
aziza alaoui slimani
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Mohamed Amine Mahmoudi
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
Lilia Sfaxi
 
INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE HINDOUSSATI
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Sofien Benrhouma
 
Rapport de projet de conception et de développement
Rapport de projet de conception et de développementRapport de projet de conception et de développement
Rapport de projet de conception et de développement
Donia Hammami
 
PROJET JAVA BD MySQL
PROJET JAVA BD MySQLPROJET JAVA BD MySQL
PROJET JAVA BD MySQL
Wilfried Tiani
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMajid CHADAD
 
TP 3 ACCESS
TP 3 ACCESSTP 3 ACCESS
TP 3 ACCESS
Chingongou ­
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
Amri Ossama
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
salah fenni
 
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeEcole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Mehdi Hamime
 
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Arnold Stellio
 
TP 1 ACCESS
TP 1 ACCESSTP 1 ACCESS
TP 1 ACCESS
Chingongou ­
 
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
ATPENSC-Group
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Ghodbane Heni
 
Bac blanc base de données
Bac blanc base de donnéesBac blanc base de données
Bac blanc base de donnéeslycee
 
Rapport Projet de Fin d'Etudes
Rapport Projet de Fin d'EtudesRapport Projet de Fin d'Etudes
Rapport Projet de Fin d'Etudes
Hosni Mansour
 

Tendances (20)

Comptabilité générale des entreprises marocaines
Comptabilité générale des entreprises marocainesComptabilité générale des entreprises marocaines
Comptabilité générale des entreprises marocaines
 
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed AmineRapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
Rapport de stage d'initiation 2015 Mahmoudi Mohamed Amine
 
TP2-UML-Correction
TP2-UML-CorrectionTP2-UML-Correction
TP2-UML-Correction
 
INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE INFORMATIQUE DES GESTION : MERISE
INFORMATIQUE DES GESTION : MERISE
 
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
Rapport Projet De Fin D'étude Développent d'une application web avec Symfony2
 
Rapport de projet de conception et de développement
Rapport de projet de conception et de développementRapport de projet de conception et de développement
Rapport de projet de conception et de développement
 
PROJET JAVA BD MySQL
PROJET JAVA BD MySQLPROJET JAVA BD MySQL
PROJET JAVA BD MySQL
 
Tp2 excel
Tp2 excelTp2 excel
Tp2 excel
 
Merise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigésMerise+ +exercices+mcd+-+corrigés
Merise+ +exercices+mcd+-+corrigés
 
TP 3 ACCESS
TP 3 ACCESSTP 3 ACCESS
TP 3 ACCESS
 
Cours complet Base de donne Bac
Cours complet Base de donne Bac Cours complet Base de donne Bac
Cours complet Base de donne Bac
 
resume algo 2023.pdf
resume algo 2023.pdfresume algo 2023.pdf
resume algo 2023.pdf
 
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliothequeEcole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
Ecole ESMA : Rapport de projet - Application de gestion d'une bibliotheque
 
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
Memoire de fin d'études pour le diplome de Chef de Projet Informatique et Rés...
 
TP 1 ACCESS
TP 1 ACCESSTP 1 ACCESS
TP 1 ACCESS
 
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
Fiche de TP 1 sur les Feuilles de calculs avec les Tableurs
 
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNCRappport PFE 2012 Ghodhbane Hani - OpenSNC
Rappport PFE 2012 Ghodhbane Hani - OpenSNC
 
Tp word n° 1
Tp word n° 1Tp word n° 1
Tp word n° 1
 
Bac blanc base de données
Bac blanc base de donnéesBac blanc base de données
Bac blanc base de données
 
Rapport Projet de Fin d'Etudes
Rapport Projet de Fin d'EtudesRapport Projet de Fin d'Etudes
Rapport Projet de Fin d'Etudes
 

Similaire à Polycop td access 2007 facturation

Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
Raef Ghribi
 
eQ Services PFE
eQ Services PFEeQ Services PFE
eQ Services PFE
fayway
 
Guide iphone dce solutions
Guide iphone dce solutionsGuide iphone dce solutions
Guide iphone dce solutions
DCE Solutions
 
Access97fr exercice
Access97fr exerciceAccess97fr exercice
Access97fr exercicehassan1488
 
Open a New Fast-food in Maastricht, The Netherlands? (FRE
Open a New Fast-food in Maastricht, The Netherlands? (FREOpen a New Fast-food in Maastricht, The Netherlands? (FRE
Open a New Fast-food in Maastricht, The Netherlands? (FREDeWinterP
 
Module 6 dossier final en pdf
Module 6 dossier final en pdfModule 6 dossier final en pdf
Module 6 dossier final en pdfDeWinterP
 
Rapport stage pact13
Rapport stage pact13Rapport stage pact13
Rapport stage pact13
Faustine Loiseau
 
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
Pôle Réseaux de Chaleur - Cerema
 
Exemple de proposition PME Permabec
Exemple de proposition PME PermabecExemple de proposition PME Permabec
Exemple de proposition PME Permabec
Carl Bilodeau
 
Biznis plan
Biznis planBiznis plan
Biznis plan
seminarskid
 
Mémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventionsMémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventions
Mohamed Arar
 
champ
champchamp
Plan d'action contre la fraude fiscale et sociale
Plan d'action contre la fraude fiscale et socialePlan d'action contre la fraude fiscale et sociale
Plan d'action contre la fraude fiscale et sociale
lesoirbe
 
Barometre des Pratiques de Veille 2008
Barometre des Pratiques de Veille 2008Barometre des Pratiques de Veille 2008
Barometre des Pratiques de Veille 2008
Digimind
 
Manuel administrateurs NetExplorer
Manuel administrateurs NetExplorerManuel administrateurs NetExplorer
Manuel administrateurs NetExplorer
NetExplorer
 
Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0
Codendi
 
Rapport Veille Salon Pollutec 2009 Traitement Des Pollutions
Rapport Veille Salon Pollutec 2009 Traitement Des PollutionsRapport Veille Salon Pollutec 2009 Traitement Des Pollutions
Rapport Veille Salon Pollutec 2009 Traitement Des Pollutions
Viedoc
 
gestion de notariat avec openerp
gestion de notariat avec openerpgestion de notariat avec openerp
gestion de notariat avec openerp
HORIYASOFT
 

Similaire à Polycop td access 2007 facturation (20)

Rapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et HelpdeskRapport de pfe gestion de parc informatique et Helpdesk
Rapport de pfe gestion de parc informatique et Helpdesk
 
eQ Services PFE
eQ Services PFEeQ Services PFE
eQ Services PFE
 
Guide iphone dce solutions
Guide iphone dce solutionsGuide iphone dce solutions
Guide iphone dce solutions
 
Access97fr exercice
Access97fr exerciceAccess97fr exercice
Access97fr exercice
 
Open a New Fast-food in Maastricht, The Netherlands? (FRE
Open a New Fast-food in Maastricht, The Netherlands? (FREOpen a New Fast-food in Maastricht, The Netherlands? (FRE
Open a New Fast-food in Maastricht, The Netherlands? (FRE
 
Module 6 dossier final en pdf
Module 6 dossier final en pdfModule 6 dossier final en pdf
Module 6 dossier final en pdf
 
Rapport stage pact13
Rapport stage pact13Rapport stage pact13
Rapport stage pact13
 
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
Potentiel de dévelopement du réseau de chaleur de la ville de Vénissieux - ra...
 
Exemple de proposition PME Permabec
Exemple de proposition PME PermabecExemple de proposition PME Permabec
Exemple de proposition PME Permabec
 
Biznis plan
Biznis planBiznis plan
Biznis plan
 
Mémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventionsMémoire fin d'étude gestion des interventions
Mémoire fin d'étude gestion des interventions
 
Bureautique
BureautiqueBureautique
Bureautique
 
champ
champchamp
champ
 
Plan d'action contre la fraude fiscale et sociale
Plan d'action contre la fraude fiscale et socialePlan d'action contre la fraude fiscale et sociale
Plan d'action contre la fraude fiscale et sociale
 
Barometre des Pratiques de Veille 2008
Barometre des Pratiques de Veille 2008Barometre des Pratiques de Veille 2008
Barometre des Pratiques de Veille 2008
 
Manuel administrateurs NetExplorer
Manuel administrateurs NetExplorerManuel administrateurs NetExplorer
Manuel administrateurs NetExplorer
 
Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0Guide Utilisateur Codendi 4.0
Guide Utilisateur Codendi 4.0
 
Rapport Veille Salon Pollutec 2009 Traitement Des Pollutions
Rapport Veille Salon Pollutec 2009 Traitement Des PollutionsRapport Veille Salon Pollutec 2009 Traitement Des Pollutions
Rapport Veille Salon Pollutec 2009 Traitement Des Pollutions
 
Guide nvivo 9
Guide nvivo 9Guide nvivo 9
Guide nvivo 9
 
gestion de notariat avec openerp
gestion de notariat avec openerpgestion de notariat avec openerp
gestion de notariat avec openerp
 

Dernier

Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
Friends of African Village Libraries
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
MelDjobo
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
cristionobedi
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
mrelmejri
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Oscar Smith
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
sewawillis
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
Moukagni Evrard
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
Txaruka
 
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Yuma91
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
Txaruka
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
WarlockeTamagafk
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
Txaruka
 

Dernier (12)

Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024Burkina Faso library newsletter May 2024
Burkina Faso library newsletter May 2024
 
Mémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et auditMémoire de licence en finance comptabilité et audit
Mémoire de licence en finance comptabilité et audit
 
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
Formation Intelligence Artificielle pour dirigeants- IT6-DIGITALIX 24_opt OK_...
 
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
Impact des Critères Environnementaux, Sociaux et de Gouvernance (ESG) sur les...
 
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La JeunesseConseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
Conseils pour Les Jeunes | Conseils de La Vie| Conseil de La Jeunesse
 
Système de gestion des fichiers de amine
Système de gestion des fichiers de amineSystème de gestion des fichiers de amine
Système de gestion des fichiers de amine
 
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
SYLLABUS DU COURS  MARKETING DTS 1-2.pdfSYLLABUS DU COURS  MARKETING DTS 1-2.pdf
SYLLABUS DU COURS MARKETING DTS 1-2.pdf
 
Iris van Herpen. pptx
Iris         van         Herpen.      pptxIris         van         Herpen.      pptx
Iris van Herpen. pptx
 
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupeCours de conjugaison des verbes du premier, deuxième et troisième groupe
Cours de conjugaison des verbes du premier, deuxième et troisième groupe
 
Iris et les hommes.pptx
Iris      et         les      hommes.pptxIris      et         les      hommes.pptx
Iris et les hommes.pptx
 
Edito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdfEdito-B1-francais Manuel to learning.pdf
Edito-B1-francais Manuel to learning.pdf
 
Iris van Herpen. pptx
Iris            van        Herpen.     pptxIris            van        Herpen.     pptx
Iris van Herpen. pptx
 

Polycop td access 2007 facturation

  • 1. Informatique Bases de données TD ACCESS Travail Dirigé : "Facturation Facturation" Marc SOUQUES souques@ensat.fr Version du 14 avril 2011 Ce document appartient à : ____________________________ INSTITUT NATIONAL POLYTECHNIQUE ECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE Av de l’Agrobiopole, BP 107, 31 326 Auzeville Tolosane Tel : 05.34.32.39.00
  • 2. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Table des Matières CH1. BASE DE DONNEES "FACTURATION".............................................................................................................5 1. C AHIER DES CHARGES POUR APPLICATION "FACTURATION" ........................................................................................5 2. MODELE P HYSIQUE AVEC SES LIENS SUR LE SGBD A CCESS ........................................................................................5 CH2. LES TABLES DE BASE ..........................................................................................................................................6 1. C ONCEPTION ET C ONSTRUCTION DE LA BASE DE DONNEES ......................................................................................... 6 2. C REER LES TABLES S IMPLES ........................................................................................................................................6 A. Créer la table Client ..............................................................................................................................................7 B. Créer la table Produit............................................................................................................................................8 3. C REER LES TABLES C OMPLEXES ..................................................................................................................................9 A. Deux régles de base pour créer des tables .......................................................................................................... 10 B. Etude des Commandes......................................................................................................................................... 11 C. Créer la table CommandeEnTete ........................................................................................................................ 12 D. Créer la table CommandeLigneProduit .............................................................................................................. 14 E. Conventions de nommage dans les Tables .......................................................................................................... 16 F. Importer des données d'Excel dans Access.......................................................................................................... 16 G. Exporter des données d'Access vers Excel .......................................................................................................... 16 4. S ECURITE DE L'UTILISATION DE L'APPLICATION ......................................................................................................... 17 5. U TILISER LES TABLES EN MODE I NTERACTIF.............................................................................................................. 18 A. Rechercher des données ...................................................................................................................................... 18 B. Remplacer des données ....................................................................................................................................... 18 C. Tester les boutons… ............................................................................................................................................ 18 6. D EFINIR LES RELATIONS ENTRE LES TABLES .............................................................................................................. 19 A. Importance des relations dans un SGBD Relationnel ......................................................................................... 21 B. Des régles dans les relations ............................................................................................................................... 21 C. Tester l'Intégrité Référentielle des Relations ....................................................................................................... 22 7. R ESUME DES T ABLES ................................................................................................................................................. 23 CH3. LES REQUETES DE BASE................................................................................................................................... 24 1. R EQUETE SELECTION ................................................................................................................................................. 24 A. Requête simple sur une seule table ...................................................................................................................... 24 B. Requête multitable simple avec Relation ............................................................................................................. 27 C. Requête multitable avec calcul par enregistrement............................................................................................. 29 D. Erreur à éviter dans les requêtes multitable. ....................................................................................................... 31 E. Les fonctions du langage VBA pour les Requêtes................................................................................................ 32 F. Exercices à faire .................................................................................................................................................. 35 G. Requête avec calcul sur "Regroupement" d'enregistrements .............................................................................. 36 H. Exercices à faire .................................................................................................................................................. 36 2. R ESUME DES R EQUETES ............................................................................................................................................. 37 CH4. LES FORMULAIRES DE BASE .......................................................................................................................... 38 1. F ORMULAIRE U NITAIRE BASE SUR UNE TABLE ........................................................................................................... 38 A. Créer un Formulaire Colonne simple.................................................................................................................. 38 B. Utiliser un formulaire .......................................................................................................................................... 38 C. Modifier un formulaire ........................................................................................................................................ 39 2. F ORMULAIRE T ABULAIRE BASE SUR UNE REQUETE.................................................................................................... 43 A. Créer la requête source du futur Formulaire ...................................................................................................... 43 B. Créer un formulaire Tabulaire basé sur la requête............................................................................................. 44 C. Ajouter des contrôles ........................................................................................................................................... 44 D. Exercices à faire .................................................................................................................................................. 45 3. R ESUME DES F ORMULAIRES....................................................................................................................................... 45 CH5. LES TABLES AVEC LISTES DEROULANTES DE CHOIX POUR CLE ETRANGERE........................... 46 1. T ABLES ACTUELLES BASIQUES................................................................................................................................... 46 2. C HAMP C LE ETRANGERE AVEC LISTE DEROULANTE DE C HOIX .................................................................................. 46 A. Modifier propriétés Liste de choix des champs clés étrangères .......................................................................... 47 B. Exercice à faire… ................................................................................................................................................ 49 CH6. BILAN DE L'APPLICATION ............................................................................................................................... 51 1. D ES TABLES ............................................................................................................................................................... 51 2. D ES R EQUETES .......................................................................................................................................................... 51 3. D ES F ORMULAIRES .................................................................................................................................................... 51 Ensat - Informatique Appliquée - Marc Souques Page 2
  • 3. - ACCESS 2007 – 2010 - Travail dirigé Facturation – CH7. FACTURATION: EXTENSIONS A FAIRE SEUL ............................................................................................ 52 1. C AHIER DES CHARGES POUR LES TABLES ................................................................................................................... 52 A. Table simple......................................................................................................................................................... 52 B. Table complexe.................................................................................................................................................... 52 2. C AHIER DES CHARGES POUR LES REQUETES .............................................................................................................. 53 A. Requête simple ..................................................................................................................................................... 53 B. Requête multitable ............................................................................................................................................... 53 3. C AHIER DES CHARGES POUR LES FORMULAIRES ........................................................................................................ 55 A. Formulaire simple ............................................................................................................................................... 55 B. Formulaire Tabulaire basé sur une requête ........................................................................................................ 55 C. Formulaire "Produit" à compléter ...................................................................................................................... 55 CH8. L'ETAT .................................................................................................................................................................... 56 1. C REER UN ETAT ......................................................................................................................................................... 56 A. Etat basé sur une table ........................................................................................................................................ 56 B. Etat basé sur une requête .................................................................................................................................... 57 2. R ESUME DES E TATS ................................................................................................................................................... 60 CH9. LES FORMULAIRES COMPLEXES .................................................................................................................. 61 1. F ORMULAIRE AVEC S OUS-FORMULAIRE ..................................................................................................................... 61 2. F ORMULAIRE AVEC S OUS FORMULAIRE COMPLEXE ................................................................................................... 63 A. Version basée sur 2 Tables (pour FP) et 2 Tables (pour SF). ............................................................................. 63 B. Version basée sur 3 niveaux de Tables................................................................................................................ 64 C. Version avec 2 sous formulaires de même niveau. .............................................................................................. 64 3. F ORMULAIRE AVEC GRAPHIQUE ................................................................................................................................. 67 A. Graphique simple basé sur une Table ................................................................................................................. 67 4. F ORMULAIRE MENU PRINCIPAL ................................................................................................................................. 69 5. R ESUME SUR LES F ORMULAIRES ................................................................................................................................ 70 CH10. LES MACROS ........................................................................................................................................................ 72 1. MACRO DE DEMARRAGE AUTOMATIQUE : AUTOEXEC ............................................................................................... 72 2. MACROS POUR OUVRIR FORMULAIRES ET ETATS........................................................................................................ 72 A. Créer la macro .................................................................................................................................................... 72 B. Attacher une macro à un événement d’un contrôle Bouton................................................................................. 73 CH11. LES RECHERCHES .............................................................................................................................................. 74 1. R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MONO RESULTAT ............................................................. 75 A. Rechercher un client sur son Nom Prénom par liste déroulante......................................................................... 75 B. Auto-Actualiser la liste déroulante sur sa définition ........................................................................................... 77 2. R ECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MULTI RESULTATS ........................................................... 77 A. Rechercher des clients sur leur ville par liste déroulante ................................................................................... 77 3. R ECHERCHE MONO CRITERE, MULTI VALEURS DU CRITERE, MULTI RESULTATS ......................................................... 80 4. R ECHERCHE MULTI CRITERES, MONO VALEUR DU CRITERE , MULTI RESULTATS ......................................................... 80 CH12. LES FORMULAIRES COMPLEXES SUITE ..................................................................................................... 82 1. S OUS FORMULAIRE BASE SUR R EQUETE AVEC CALCULS ............................................................................................ 82 CH13. INTRODUCTION AUX BASES DE DONNEES ET A ACCESS ................................................................... 83 1. U N S YSTEME DE GESTION DE B ASES DE DONNEES .................................................................................................... 83 2. U NE APPLICATION DE B ASE DE D ONNEES.................................................................................................................. 83 3. U NE B ASE DE DONNEES ............................................................................................................................................. 83 4. ACCESS ................................................................................................................................................................... 84 A. Choix entre Access et Excel pour développer une application ? ......................................................................... 84 CH14. CORRECTION EXTENSION: LES TABLES .................................................................................................... 85 A. Créer la table Categorie ...................................................................................................................................... 85 B. Modifier la table Produit ..................................................................................................................................... 85 C. Créer la table Fournisseur .................................................................................................................................. 86 D. Créer la table Intermédiaire ProdFour ............................................................................................................... 86 E. Tirer les Relations avec Intégrité Référentielle: .................................................................................................. 88 F. Modèle Conceptuel de Données (MCD) à la source du Modèle Physique Access............................................. 88 CH15. CORRECTION EXTENSION: LES REQUETES .............................................................................................. 89 A. Requête simple ..................................................................................................................................................... 89 B. Requête multitable ............................................................................................................................................... 89 Ensat - Informatique Appliquée - Marc Souques Page 3
  • 4. - ACCESS 2007 – 2010 - Travail dirigé Facturation – CH16. CORRECTION EXTENSION : FORMULAIRES.............................................................................................. 91 A. Formulaire simple ............................................................................................................................................... 91 B. Formulaire Tabulaire basé sur une requête ........................................................................................................ 91 C. Formulaire produit à compléter .......................................................................................................................... 91 CH17. DES ERREURS A NE PAS FAIRE....................................................................................................................... 92 CH18. GESTION DES IMAGES DEPENDANTES D'ENREGISTREMENTS D'UNE TABLE ............................... 93 1. I MAGES ET T ABLE : VERSION1 BASEE SUR C HAMP OLE ............................................................................................ 93 A. Gérer un champ OLE .......................................................................................................................................... 93 B. Gérer un contrôle de formulaire pour afficher l'image ....................................................................................... 93 2. I MAGES ET T ABLE : VERSION 2 BASEE SUR C HAMP TEXTE ET MACRO D'AFFECTATION ............................................. 94 3. I MAGES ET T ABLE : VERSION 3 BASEE SUR C HAMP TEXTE ET P ROCEDURE-VBA D'AFFECTATION ............................ 97 4. R ESUME :S AISIR, STOCKER, MODIFIER ET S UPPRIMER DES IMAGES DANS DES ENREGISTREMENTS DE TABLE . .......... 99 CH19. LES TABLES AVEC CHAMPS A LONGUEUR VARIABLE ........................................................................ 100 1. C HAMP DE TYPE MEMO............................................................................................................................................ 100 2. C HAMP DE TYPE P IECE JOINTE ................................................................................................................................. 100 3. C HAMP AVEC PLUSIEURS VALEURS .......................................................................................................................... 101 A. Démarche Classique Relationnelle.................................................................................................................... 102 4. F ORMULAIRE BASE SUR UN MODELE DE FORMULAIRE.............................................................................................. 105 A. Créer un modèle de formulaire.......................................................................................................................... 105 B. Créer un formulaire basé sur un 'modèle' de formulaire................................................................................... 105 CH20. LES MODES D'UTILISATION DE L'APPLICATION ................................................................................... 106 1. MODE UTILISATEUR : CONFIGURATION DU DEMARRAGE ......................................................................................... 106 2. MODE PARTAGE DE DONNEES ENTRE PLUSIEURS UTILIS ATEURS EN RESEAU LOCAL ................................................ 107 CH21. LES MACROS AVANCEES................................................................................................................................ 108 1. T ESTER LES EVENEMENTS DECLANCHANT DES MACROS DANS UN FORMULAIRE ...................................................... 108 2. MACRO CONDITIONNELLE ATTACHEE A UN EVENEMENT ......................................................................................... 109 3. R EFERENCE DES ACTIONS DES MACROS .................................................................................................................. 111 CH22. MODIFICATION DES DONNEES DES TABLES ........................................................................................... 113 1. MODIFICATION MANUELLE ...................................................................................................................................... 113 2. MODIFICATION AUTOMATIQUE PAR REQUETE ......................................................................................................... 114 A. La requête action ............................................................................................................................................... 114 B. La requête action paramétrée par formulaire ................................................................................................... 115 3. MODIFICATION AUTOMATIQUE PAR MACRO ............................................................................................................ 117 A. Mise à jour Automatique Invisible du stock de Produit sur événement Saisie de la Quantité commandée ....... 117 CH23. TRAITEMENTS DE SYNTHESE ...................................................................................................................... 120 1. F ORMULAIRE T ABLEAU C ROISE DYNAMIQUE (TCD) .............................................................................................. 120 A. Créer la requête source du futur formulaire ..................................................................................................... 120 B. Créer le formulaire TCD basé sur la requête.................................................................................................... 121 CH24. LA BASE DE DONNEES FINALE..................................................................................................................... 123 Ensat - Informatique Appliquée - Marc Souques Page 4
  • 5. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Ch1. Base de données "Facturation" A partir d’un cahier des charges définissant le sujet de l'application, création de la base de données. 1. Cahier des charges pour application "Facturation" Gérer une application commerciale de facturation pour PME. Il existe des ensembles de Clients, de Commandes et de Produits. Un Client fait référence à au plus plusieurs () Commandes. Une Commande fait référence à au plus 1 seul Client. Une Commande fait référence à au plus plusieurs Produits (commandés). Un Produit fait référence à au plus plusieurs Commandes (où il est commandé) Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée. 2. Modèle Physique avec ses liens sur le SGBD Access Structure de la base de données à créer. Ci-dessous, les champs des tables avec les VALEURS assurant les Relations. Clé primaire Clé primaire SANS doublon SANS doublon Clé primaire SANS doublon basée sur 2 champs Clé primaire Clé SANS doublon étrangère AVEC doublons Clé Clé étrangère étrangère AVEC AVEC Légende : doublons doublons Clé primaire mono ou multi champ Clé étrangère liée à une clé primaire Ensat - Informatique Appliquée - Marc Souques Page 5
  • 6. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Ch2. Les Tables de base Objectif du TD : Construire une Base de Données de FACTURATION basée sur plusieurs Tables : - Client - Produit - Commande - Produit Commandé pour commencer 1. Conception et Construction de la Base de données Lorsque l'on veut construire une Maison, on doit procéder en 3 temps : a) Créer sur le papier un Plan Conceptuel sans aspect technique des différentes Pièces qui composent la future Maison et gérer les Liens et Interdépendances qui existent entre ces Pièces. b) Créer sur le papier un Plan Logique, à partir du Plan Conceptuel, en y ajoutant les éléments techniques (type de matériaux, épaisseur isolation, câblage électrique, réseau eau, chauffage, …). c) Construire sur le Terrain la Maison Physique , à partir du Plan Logique. En informatique, pour construire une Base de Données, on procède de même en 3 temps : a) Créer sur le papier un Modèle Conceptuel (sans aspect technique) des différentes Entités qui composent la future Base de Données et gérer les Associations (liens) qui existent entre ces Entités. b) Créer sur le papier un Modèle Logique, à partir du Modèle Conceptuel, en y ajoutant les éléments techniques (Clé primaire, Clé étrangère, Relations d'une Base de Données RELATIONNELLE) c) Construire sur l'Ordinateur (Access) la Base de Données Physique , à partir du Modèle Logique. (Voir éventuellement Cours de Modélisation présentant ces 3 modèles) Ce TD vise à utiliser ACCESS pour créer directement sur ordinateur une Base de Données Physique mais il est recommandé de se documenter sur les cours de Modélisation des Données qui permettent de créer Modèles Conceptuels de Données (MCD) et Modèles Logiques de Données (MLD). Vous trouverez plus loin dans ce document (fin Chapitre 14) le MCD (Modèle Conceptuel des Données) correspondant à la base de données Access développée dans ce TD. Notre démarche consiste, pour la partie concernant les Données, à établir au fur et à mesure quelques règles simples pour définir les Tables de notre application de Facturation. Démarrer ACCESS . Clic sur Base de donnée vide, Clic sur pour choisir un dossier puis nommer l'application ESSAI (l'extension accdb signifie Access Data Base c'est le format 2007 et 2010) et bouton Créer. - Si besoin, compréhension et configuration de l'environnement de travail : Bouton Office (Fichier en Version 2010) puis Options Access : - Standard : Définir le dossier de données par défaut pour ouvrir ou enregistrer des bases - Base de données active : Cocher Compacter lors de la fermeture (pour réduire la taille du fichier accdb) - Personnaliser : Définir les icones de la barre d'accès rapide en haut d'écran et valider OK. 2. Créer les Tables Simples Nous allons créer les tables Client et Produit qui sont simples car chaque enregistrement ne fait pas référence à au plus 1 seul enregistrement d'une autre table. Un Client ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Produit commandé. Un Produit ne fait pas référence à au plus 1 seule Commande ou à au plus 1 seul Client. Fermer la table ouverte par défaut. Onglet Créer, Bouton Création de Table pour être en mode 'Création' Ensat - Informatique Appliquée - Marc Souques Page 6
  • 7. - ACCESS 2007 – 2010 - Travail dirigé Facturation – A. Créer la table Client Voir exemple en bas de page Nom du Champ Type de données Propriétés Un nombre qui s’incrémente Num Client NuméroAuto automatiquement à chaque nouveau Nom Texte Taille : 25 client saisi : 1 puis 2 puis 3 (Attention : le type Format : > (conversion en Majuscule) Texte est limité à Null interdit : OUI (saisie obligatoire) (Null = VIDE) 255 caractères !) Chaine vide autorisée : NON Si besoin de plus de 255 Prénom Texte Taille : 15 Null interdit : OUI caractères, utiliser le Chaine vide autorisée : NON type Mémo (taille illimitée) Adresse Texte Taille : 30 Fonction Date() retournant la Code Postal Texte (pas Num car on Taille : 5 date du jour. On peut la ne fait pas de calcul sur Null interdit : NON donc trouver par , Fonction, les codes postaux !) saisie facultative Fonction intégrées, Ville Texte Taille : 25, Format : > (Majuscule) Date/heure, Date Valeur par défaut : TOULOUSE Date Entrée Date/Heure Format : Date, abrégé Valeur par défaut : Date( ) Afficher le sélecteur : À certaines dates Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque enregistrement de la table (chaque élément de la population ). Deux mêmes valeurs dans 2 enregistrements de ce champ sont interdites (pas de doublons: 2 personnes ne doivent pas avoir le même numéro de client 3). Définir une clé primaire sur le champ: Num Client en sélectionnant ce champ puis barre d’outils Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Client : Oui SANS doublon). Convention personnelle pour Nom de la Clé primaire : Num + (Nom de table) = Num Client On souhaite que le couple Nom Prénom soit unique, interdire 2 fois LECLERC Alain. Clic sur Index : Donner librement un Nom à un Index : NomPrenom Choisir dans la liste déroulante les 2 champs à indexer : Nom puis Prénom Sélectionner la ligne NomPrenom et saisir Unique : Oui pour éviter les doublons sur ce couple de champs Enregistrer la table (disquette de la barre outils 'Accès rapide') : Client Passer en mode Feuille de données pour saisir 3 Clients comme ci-dessus : Ok pour message erreur ci-dessus, pour éviter le doublon MUILLARD Marc, modifier l'enregistrement 3 en DURAND Alain pour avoir : Passer en mode Création pour consulter la structure de la table puis fermer (croix à droite) la table Client. Ensat - Informatique Appliquée - Marc Souques Page 7
  • 8. - ACCESS 2007 – 2010 - Travail dirigé Facturation – B. Créer la table Produit Onglet Créer, Bouton Création de Table pour être en mode 'Création' Nom du Champ Type de données Propriété du champ Si besoin de plus de 255 caractères, Num Produit Texte Taille : 6 utiliser le type Mémo (taille illimitée) Désignation Texte Taille : 60 Prix Ht Monétaire Valide si : >=3 (pour afficher € uros) Message si erreur :Vérifier le minimum (>=3 € ) Taux Tva Numérique Taille : Réel simple (Touche F1 pour l’Aide) Ici, le Num Produit n'est pas en NuméroAuto Format : Pourcentage (%) car on veut gérer notre propre Numérotation : Valeur par défaut : taper 0.196 pour obtenir 3 lettres pour la marque du produit et 0,196 (virgule à la place du point) 3 chiffres pour le rang du produit dans la marque Valide si : 0.196 Ou 0.055 (ACE002 pour le 2° produit de marque ACER) Message si erreur : Vérifier le taux Le Prix Ttc est une valeur calculée (Prix Ttc = Prix Ht * (1+Taux Tva)). On ne stocke pas dans une Table un champ calculé car on risque l'erreur d'avoir calculé et stocké un PrixTtc sur un ancien Prix Ht : exemple Prix Ht = 100 ; Prix Ttc = 119.6 puis modif Prix Ht = 95 et Prix Ttc = 119.6 faux car non modifié On calculera donc le Prix Ttc (sur les actuels Prix Ht et Taux Tva) chaque fois que l'on en aura besoin même si cela prend un peu (si peu) de temps-machine. Règle : La Table stocke des informations de base (non calculées) Une clé primaire est un (ou plusieurs) champ de la table qui identifie sans ambiguïté chaque enregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans deux enregistrements de ce champ sont interdites (pas de doublons: 2 produits ne doivent pas avoir le même numéro de produit). Définir une clé primaire sur le champ: Num Produit en sélectionnant ce champ puis barre d’outils Clé primaire (Cela bascule automatiquement la propriété Index du champ Num Produit : Oui SANS doublon). Convention personnelle pour Clé primaire : Num + (Nom de table) = Num Produit On souhaite que la Désignation du produit soit unique, interdire 2 fois Imprimante laser Canon type 1. On veut donc un index sans doublon (unique) sur le seul champ Désignation Compléter la description du champ Désignation avec : Désignation Texte Indexé : Oui sans doublons Ici, il est inutile de passer par Clic sur Index car l'index est ici MONO-Champ. Par contre, le résultat est bien stocké dans les index : ATTENTION : Num Produit Texte Indexé : Oui sans doublons car Clé Primaire Désignation Texte Indexé : Oui sans doublons sans être Clé primaire La clé primaire est le champ qui identifie chaque enregistrement de la table, c'est cette information qui est utilisée dans une autre table pour pointer (référencer) vers la table Produit. Enregistrer la table : Produit puis Fermer la table : Remarque : Les noms des tables sont notés au singulier (Client, Produit) sans préfixe Tab Produits Faire un effort dans le choix des noms des tables pour que le nom corresponde au contenu de la table : Les produits Catalogue produit Produits vendus Visualisation en mode feuille de données Ouvrir la table Produit par double-clic sur Produit : Ensat - Informatique Appliquée - Marc Souques Page 8
  • 9. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Passer en mode Création par le bouton (en haut à gauche) de l'onglet Accueil : Passer en mode Feuille de données par le même bouton de barre d' outils : (en haut à gauche) Saisir : (remarque les erreurs volontaires sont en italique et souligné ci-dessous) Num Produit Désignation Prix Ht Taux Tva Erreur CAN001 Imprimante laser 1 puis 300 19.6% Erreur sur le Prix Canon type 1 MIC001 Initiation à 15 20.6% puis 5.5% Erreur sur la Tva ACCESS pour erreur La tva sur les livres est à 5.5% erreur les Nuls erreur CAN001 Imprimante 1000 19.6% Erreur sur Num Produit détectée seulement après saisie de Taux Tva (doublon dans clé primaire avec le 1° enregistrement) : erreur modifier ce Num Produit en CAN002 EPS001 Imprimante 75 19.6% Erreur sur Désignation (doublon sur propriété "OUI sans doublon"), modifier cette Désignation avec Imprimante Jet encre Epson série1 Remarque sur le champ Num Produit : les 3 premières lettres correspondent à la marque du produit. CAN pour Canon, EPS pour Epson, MIC pour l'éditeur Microapplication Il y a vérification automatique de l’unicité (Unique) de la clé Primaire de Num produit. Remarque : les Données saisies sont enregistrées automatiquement (pas besoin d'enregistrer sauf la mise en forme ou les définitions des champs des tables). Elargir la colonne Désignation (modification de la mise en forme). Fermer la table : (l'enregistrement de la mise en forme de la table est proposé) Ouvrir la table : elle est triée sur la clé primaire : Num Produit Ajouter un enregistrement par ce bouton dans la dernière ligne de la table signalée par (ce symbole sur une ligne vierge indique la position pour ajouter des enregistrements) et tester l’erreur sur le taux de TVA: CAN003 Imprimante Canon couleur 300 33.33% puis 19.6% Supprimer l'enregistrement ci-dessus en le sélectionnant préalablement par la colonne grisée à gauche de Num Produit puis Suppr du clavier. Fermer la table : 3. Créer les Tables Complexes Nous allons créer les tables pour gérer les Commandes de Produits faites par les Clients. Il y a 2 aspects complexes concernant les Commandes de Produits : a) Chaque enregistrement d'une table1 fait référence à au plus 1 seul enregistrement d'une table2. - Une Commande fait référence à au plus 1 seul Client. b) Chaque enregistrement d'une table1 fait référence à au plus N enregistrements d'une table2 et chaque enregistrement d'une table2 fait référence à au plus N enregistrements d'une table1. - Une Commande fait référence à au plus N Produits qui sont commandés et un Produit fait référence à au plus N Commandes où il est commandé. Ensat - Informatique Appliquée - Marc Souques Page 9
  • 10. - ACCESS 2007 – 2010 - Travail dirigé Facturation – A. Deux régles de base pour créer des tables Si on ne dispose pas d'une analyse des données sous forme de Modèle Conceptuel de Données (MCD) et Modèle Logique de Données (MLD) , on peut utiliser les règles suivantes directement dans Access. De manière très simplifiée et limitée , il existe 2 types principaux de relation entre 2 tables : Relation Père - Fils et Relation Frère - Sœur 1) Relation Père - Fils : PERE FILS Un Père peut avoir de 0 à N Fils, un Fils peut avoir de 0 à 1 Père. x x Pour gérer cette relation, on ajoute dans la table Fils x x un champ Ref Père contenant la valeur de l'identification du Père. x x Clé étrangère Clé primaire x AVEC doublons SANS doublon Père sans fils ou ayant perdu son ou ses fils Fils de père Table Fils Table Père inconnu Convention perso pour nom Clé étrangère : Ref + (Nom de la table liée) = Ref Père (en italique bleu) Convention perso pour nom Clé primaire : Num + (Nom de la table) = Num Fils (en gras rouge) Demander à voir éventuellement exemple diapositive : "PV et sa Voiture". 2) Relation Frère - Sœ ur Un Frère peut avoir de 0 à N Sœ une Sœ peut avoir de 0 à N Frères. urs, ur FRERE SOEUR Pour gérer cette relation, on ajoute une nouvelle table intermédiaire avec x x un champ Ref Frère un champ Ref Soeur D'éventuels champs x x contenant la valeur de contenant la valeur de dépendants de frère x x l'identification de Frère l'identification de Sœ ur ET sœ ur. x x Clé étrangère Clé étrangère Clé primaire AVEC doublons AVEC doublons Clé primaire SANS doublon SANS doublon Table Frère Table Croisement : Frère - Sœur Table Sœur Autre présentation non informatique de la table Croisement Frère - Sœur A l'aide de ces 2 règles de base, nous allons gérer les Commandes de Produits faites par les Clients. Ensat - Informatique Appliquée - Marc Souques Page 10
  • 11. - ACCESS 2007 – 2010 - Travail dirigé Facturation – B. Etude des Commandes 1) Relation Père – Fils Un Client fait référence à au plus N Commandes. Une Commande fait référence à au plus 1 seul Client. Convention : gras + souligné Table Commande indique une Table Client clé primaire 2) Relation Frère – Sœur Une Commande fait référence à au plus N Produits qui sont commandés. Un Produit fait référence à au plus N Commandes qui le commandent. Table Commande Table Produit Table Croisement : Commande - Produit On nomme généralement cette table de Croisement en mixant les noms des 2 tables croisées, par exemple : ComProd ou ProdCom Ensat - Informatique Appliquée - Marc Souques Page 11
  • 12. - ACCESS 2007 – 2010 - Travail dirigé Facturation – C. Créer la table CommandeEnTete Un Client fait référence à au plus plusieurs () Commandes. Une Commande fait référence à au plus 1 seul Client. Nous sommes donc dans la règle Père – Fils vue précédemment. Un Père fait référence à au plus plusieurs Fils Un Fils fait référence à au plus 1 seul Père Donc nous gérerons un champ Ref Client dans la table Commande pour pointer vers le champ Num Client Clé primaire de la table Client. Ce champ Ref Client est appelé Clé étrangère car il sera relié plus tard à Num Client. On gère ici la partie fixe de la Commande, le haut de la commande, son En-tête, sans prendre en compte les produits commandés car ils sont en nombre variable. Un nombre qui s’incrémente Nom du Champ Type de données Propriétés automatiquement à chaque nouvelle Num Commande NuméroAuto commande saisie : 1 puis 2 puis 3 Ref Client Numérique Taille : Entier long ; PAS de valeur par défaut (pour futur lien vers Num Null interdit : OUI donc saisie obligatoire d'1 valeur de Client Chaine vide autorisée : NON de table CLIENT) (pour future compatibilité avec Num Client de la table Client qui est NuméroAuto donc en Numérique-Entier long) Date Commande Date/Heure Format : Date, abrégé (jj/mm/aaaa) Valeur par défaut : Date( ) (=date du jour) Afficher le sélecteur : À certaines dates Date Echéance Date/Heure Format : Date, abrégé Aujourd'hui Valeur par défaut : Date( ) + 30 + 30 jours Afficher le sélecteur : À certaines dates Payée Oui/Non Valeur par défaut : Non Total Commande : NE PAS gérer car ce n'est pas une DONNEE mais un CALCUL Remarque : Dans cette table CommandeEnTete, le nom Ref Client est choisi librement. Je prends la règle 'Ref'+NomTable liée pour la Clé étrangère mais d'autres solutions sont possibles. (Num Client est souvent utilisé mais confusion possible avec le nom et le rôle de Num Client qui est clé primaire de la table CLIENT) Définir la clé primaire sur le champ : Num Commande Enregistrer la table : CommandeEnTete Donnée existant dans la clé primaire Num Client de la Passer en mode Feuille de données : table Client Saisir : Table Client Num Commande Ref Client Date Commande Date Echéance Payée 1 (Automatique) 3 (saisir une date) (saisir une date) Cocher pour Oui 2 (Automatique) 3 (valider date) (valider date) Rien pour Non 3 (Automatique) 1 (valider date) (saisir une date) Cocher pour Oui Il y a 3 CommandeEnTete. Ensat - Informatique Appliquée - Marc Souques Page 12
  • 13. - ACCESS 2007 – 2010 - Travail dirigé Facturation – a) La Commande 1 fait référence à un seul client (le 3) par le champ Ref Client. Num Commande Ref Client Date Date Echéance Payée Commande 1 3 b) Le Client 3 fait référence à plusieurs Commandes (la 1 et la 2) par le champ Ref Client Num Commande Ref Client Date Date Echéance Payée Commande 1 3 2 3 C'est par cette technique que l'on respecte le cahier des charges : Une Commande fait référence à au plus 1 seul Client. Un Client fait référence à au plus plusieurs () Commandes. Fermer la table CommandeEnTete. Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire. Gestion de la saisie dans la clé étrangère Ref Client : Pour le champ Ref Client, pour le moment, la saisie est faite au clavier en tapant manuellement 3 par exemple. En réalité, pour une liste de clients comme celle ci-contre, on ne peut faire référence pour Ref Client de la table CommandeEnTete qu'à 1 des 3 clients identifiés (1, 2, 3) dans la clé primaire Num Client de la table Client. Une erreur consisterait pour Ref Client à saisir un numéro 4 qui n'existe pas dans Num Client. Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Client par une liste déroulante ne proposant QUE les Clients qui existent dans la clé primaire Num Client de la table Client. Pour faciliter le choix du client de la commande, nous présenterons en plus de Num Client, le Nom et le Prénom du client en classant ces clients par ordre alphabétique des Noms – Prénoms. Nous pourrons même simplifier la saisie en n'affichant pas le Numéro du Client. Le champ Ref Client a le rôle technique de gérer le lien entre les 2 tables. Il a ici un nom peu compréhensible pour l'utilisateur. La propriété Légende des champs permet de gérer un nom de substitution qui s'affichera à la place de Ref Client. Nous n'utilisons pas cette procédure pour le moment pour ne pas compliquer la compréhension. Si vous relisez ce polycopié pour faire un projet Access, il faut traiter la gestion de ces listes déroulantes de clés étrangères dès la création des Tables . Ensat - Informatique Appliquée - Marc Souques Page 13
  • 14. - ACCESS 2007 – 2010 - Travail dirigé Facturation – D. Créer la table CommandeLigneProduit Une Commande fait référence à au plus plusieurs Produits (commandés). Un Produit fait référence à au plus plusieurs Commandes.(où il est commandé) Pour 1 Commande ET pour 1 Produit, il y a 1 Quantité de produit commandée. Nous sommes donc dans la règle Frère – Sœ vue précédemment. ur Un Frère fait référence à au plus plusieurs Sœ urs Une Sœ ur fait référence à au plus plusieurs Frères Donc, alors que les tables CommandeEnTête et Produit sont déjà créées, nous allons créer une nouvelle table intermédiaire entre ces 2 tables pour assurer le lien plusieurs à plusieurs (N / N). Donc nous gérerons dans cette table un champ Ref Commande pour pointer vers le champ Num Commande Clé primaire de la table Commande. Ce champ Ref Commande est appelé Clé étrangère car il sera relié avec le champ Num Commande. Donc nous gérerons dans cette table un champ Ref Produit pour pointer vers le champ Num Produit Clé primaire de la table Produit. Ce champ Ref Produit est appelé Clé étrangère car il sera relié avec le champ Num Produit. On gère ici la structure de la table pour un Produit commandé d' une CommandeEnTete. C'est la table de croisement entre la table CommandeEnTete et la table Produit. Nom du Champ Type de Propriétés données Ref Commande Numérique Taille : Entier long ; PAS de valeur par défaut (pour lien vers (pour future compatibilité avec Num Commande de la table Num Commande CommandeEnTete qui est en NuméroAuto donc en de table CommandeEnTete) Numérique-Entier long), Null interdit : OUI ; Chaine vide autorisée : NON Ref Produit Texte Taille : 6 ; PAS de valeur par défaut , (pour lien vers (pour future compatibilité avec Num Produit de la table Num Produit Produit qui est Texte de longueur 6) de table Produit) Null interdit : OUI ; Chaine vide autorisée : NON Quantité Numérique Taille : Réel simple (au cas où on vendrait 1 boite et (quantité commandée d'un demie de 10 DVD = 15 DVD = 1,5 boite) produit d'une commande) Valeur par défaut : 1 Ici, la clé primaire n'est pas mono-champ. C'est le couple 1 - CAN001 qui identifie un Produit commandé (CAN001) dans le cadre d'une Commande (1). Définir une clé primaire : sélectionner les 2 premiers champs Ref Commande, Ref Produit par un glissé à la souris (dans la colonne de gauche) et les définir par le bouton Clé primaire comme clé primaire composée : Attention : Ref Commande et Ref Produit ne sont pas individuellement clé primaire mais le couple Ref Commande + Ref Produit est clé primaire. Il n'y a qu'1 Clé primaire par Table. Ensat - Informatique Appliquée - Marc Souques Page 14
  • 15. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Enregistrer la table : CommandeLigneProduit Donnée existant dans la clé (Ce nom intégre Commande et Produit : les 2 tables croisées) primaire Num Produit de la Passer en mode Feuille de données : table Produit Saisir : Ref Commande Ref Produit Quantité 1 CAN001 4 1 EPS001 2 Table Produit 2 CAN001 1 2 CAN002 3 2 MIC001 5 Table CommandeLigneProduit Nous avons donc 5 Produits commandées dans CommandeLigneProduit répartis sur 2 Commandes. La Commande 1 (Ref Commande) contient 2 Produits, CAN001 et EPS001 La Commande 2 (Ref Commande) contient 3 Produits, CAN001, CAN002 et MIC001 Le Produit CAN001 (Ref Produit) a été commandé 2 fois, dans les Commandes 1 et 2. Un produit commandé est identifié par la clé primaire composite Ref Commande - Ref Produit . Le couple 1 - CAN001 identifie la commande du produit CAN001 dans la commande 1. Il est impossible de ressaisir ce couple 1 - CAN001 sinon Doublon sur clé primaire. Fermer la table CommandeEnTete Fermer Access et donc la base essai (croix en haut à droite) Le texte ci-dessous est une explication, il n'y a rien à faire mais tout à lire. Gestion de la saisie dans les clés étrangères Ref Commande et Ref Produit : Pour le champ Ref Produit, pour le moment, la saisie est faite au clavier en tapant manuellement CAN001 par exemple. En réalité, pour une liste de produit comme celle ci-contre, on ne peut faire référence pour Ref Produit de la table CommandeLigneProduit qu'à 1 des n Produits identifiés (ACE001, ACE002, CAN001, …) dans la clé primaire Num Produit de la table Produit. Une erreur consisterait pour Ref Produit à saisir ABC001 qui n'existe pas dans Num Produit. Pour éviter cette erreur, nous gérerons plus tard (voir Chapitre 5 LES TABLES AVEC LISTES DEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Produit par une liste déroulante ne proposant QUE les Produits qui existent dans la clé primaire Num Produit de la table Produit. Pour faciliter le choix du produit commandé, nous présenterons en plus de Num Produit, la Désignation du produit en classant ces désignations de produits par ordre alphabétique. Nous pourrons même simplifier la saisie en n'affichant pas le Numéro du Produit. Si vous relisez ce polycopié pour faire un projet Access, il faut traiter la gestion de ces listes déroulantes de clés étrangères dès la création des Tables. Faire de même pour l'autre clé étrangère Ref Commande de cette table. FIN TD1 Ensat - Informatique Appliquée - Marc Souques Page 15
  • 16. - ACCESS 2007 – 2010 - Travail dirigé Facturation – E. Conventions de nommage dans les Tables - Pour les noms des champs : J'ai choisi d'utiliser les possibilités d'Access avec espaces et accents car ces noms sont affichés à l'utilisateur de l'application. Je mets une majuscule à la première lettre de chacun des mots composant le Champ. Exemple : Date Echéance avec 2 majuscules, 1 espace entre Date et Echéance et 1 accent. Remarque : On peut aussi gérer des noms sans espace et sans accent (DateEcheance) pour faciliter l'écriture de ces noms en programmation VBA et gérer dans ce cas la propriété du champ Légende qui propose un nom de substitution (avec espaces et accents : Date d'Echéance) pour les affichages dans les formulaires - Pour les noms des tables : J'ai choisi de NE PAS utiliser les possibilités d'espace et d'accent car ces noms NE SONT PAS affichés à l'utilisateur de l'application. Je mets une majuscule à la première lettre de chacun des mots composant la Table. Je note les noms de table au singulier car une table définit la structure pour 1 enregistrement type. Exemple : CommandeEnTete avec 2 majuscules, 0 espace, 0 accent et au singulier. F. Importer des données d'Excel dans Access Le menu Données Externes permet d'importer des données d'origines diverses vers Access. Attention : la structuration des données dans Excel est incompatible avec celle d'Access. On peut récupérer certaines informations d'Excel dans Access mais un travail manuel est ensuite nécessaire pour restructurer ces informations suivant le modèle Relationnel utilisé par Access. Le transfert Excel  Access est souvent difficile. G. Exporter des données d'Access vers Excel Le menu Données Externes permet d'exporter des données vers diverses destinations comme Excel. Remarque : la structuration des données dans Excel est incompatible avec celle d'Access. On peut exporter des informations d'Access vers Excel. Le transfert Access  Excel est généralement facile. Ensat - Informatique Appliquée - Marc Souques Page 16
  • 17. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 4. Sécurité de l'utilisation de l'application Par défaut, Access est configuré comme ci-dessous dans Bouton Office (Fichier dans version 2010), Options Access, Centre de gestion de la confidentialité, Paramètres de centre de gestion de la confidentialité : Donc, à l'ouverture d'une application Access, vous pouvez voir ceci : En effet, une application Access (comme Excel, Word et Powerpoint) peut avoir un contenu (programme VBA ou autres techniques) potentiellement dangereux. Donc, ici, du contenu est désactivé. Pour gérer cet aspect, plusieurs solutions : 1. Garder la configuration ci-dessus et cliquer à chaque ouverture de la base sur le bouton Option… puis choisir Activer le contenu si vous faite confiance à l'origine du fichier. 2. Modifier la configuration ci-dessus en activant l'option Activer toutes les macros. C'est non recommandé et potentiellement dangereux car ainsi, pour toutes les applications, du code malsain peut être exécuté. 3. Garder la configuration ci-dessus pour le Paramètre des macros à Désactivé mais définir un dossier où vous rangerez les applications de confiance (les vôtres par exemple). Dans la fenêtre du Centre de gestion de la confidentialité, Emplacements approuvés, ajouter un nouvel emplacement pour un dossier (et éventuellement ses sous-dossiers) pour obtenir un résultat de ce type. Attention, cette opération peut poser problème sur un disque d’un réseau local protégé. C'est cette dernière solution qui est recommandée et que vous mettez en place. Valider ces paramètres et fermer Access. -Sous l'application Explorateur de fichiers : - Supprimer éventuellement la base : essai.accdb - Copier Fac01a2007.accdb depuis le dossier de correction vers votre dossier de travail. - Ouvrir la base : Fac01a2007.accdb par double clic (la votre , pas celle donnée en correction) Cette application a les mêmes définitions que ci-dessus mais avec plus de données saisies dans les tables. Ensat - Informatique Appliquée - Marc Souques Page 17
  • 18. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 5. Utiliser les tables en mode Interactif A. Rechercher des données Ouvrir Table Client : Positionner le curseur sur le champ Nom et sur l’enregistrement 1: Clic sur le bouton de Recherche (Jumelles de l'onglet Accueil) : TERIEUR puis bouton Suivant 1) Caractères génériques * ? # a) Astérisque : * (remplace une chaîne de caractères quelconque) Positionner le curseur sur le champ Nom et sur l’enregistrement 1: Rechercher : BON* Rechercher : *R b) Point d'interrogation : ? (remplace un seul caractère quelconque) Positionner le curseur sur le champ Nom Client et sur l’enregistrement 1: Rechercher : ??R c) Dièse : # (remplace un seul caractère-chiffre) Positionner le curseur sur le champ Adresse et sur l’enregistrement 1: Rechercher : 6#* Rechercher : 6* (comprendre la différence avec 6#*) Ce que vous cherchez 'bd' B. Remplacer des données est ou pas une sous partie du 'champ entier' ? Onglet Accueil > bouton de Recherche > Remplacer... Positionner le curseur sur le champ Adresse et sur l’enregistrement 1: Rechercher : bd (attention : rechercher dans "champ entier" ou autre manière ?) Remplacer par: boulevard a) en manuel : bouton Suivant pour chercher et bouton Remplacer pour modifier b) en automatique : bouton Remplacer tout Remettre bd à la place de boulevard C. Tester les boutons… 1) Les 5 boutons de déplacement d’enregistrements en bas d’écran Premier , Précédent, Rang de l'enregistrement courant , Suivant, Dernier, Nouvel enregistrement 2) Les 2 boutons de tri croissant et décroissant Ensat - Informatique Appliquée - Marc Souques Page 18
  • 19. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 6. Définir les relations entre les tables Nous avons maintenant 4 tables, préparées pour être liées les unes aux autres. Avant de tirer les Relations, il faut vérifier que toutes les tables sont fermées et non utilisées par des formulaires ou requêtes. Accéder à la fenêtre Relation : Onglet Outils de base de données / Relations . Ci-dessus : travail à faire = lier les tables par des Relations ou Jointures Ajouter (si besoin par bouton +Afficher la table ) les 4 tables: Client, CommandeEnTete, CommandeLigneProduit et Produit et fermer cette fenêtre d'ajout. 1° lien : 1 Client (Père) peut avoir N CommandeEnTete (Fils) et 1 CommandeEnTete (Fils) est liée à 1 seul Client (Père) Définir des Liens ( appelés aussi Jointures) : * Glisser Num Client de Client (clé primaire) sur Ref Client de CommandeEnTete (clé étrangère) . Boîte de dialogue : - cocher Appliquer Intégrité Référentielle, (vérifications des données des liens, voir TEST plus loin) - Ne pas cocher 'Mettre à jour en cascade' - Ne pas cocher 'Effacer en cascade' - Type de Jointure (consulter seulement) Créer EGAUX Un-à-plusieurs : c'est le cas classique Un-à-un : erreur probable Remarque : le 1 et le ∞se placent automatiquement sur le lien, Le 1 à coté du champ clé primaire car ce champ est sans doublon, Le ∞à coté du champ clé étrangère car ce champ est doublons possibles. Pour une valeur de Num Client, on peut trouver N (∞ Commandes. ) Pour une valeur de Ref Client, on ne peut trouver qu'1 Client. 2° lien : 1 CommandeEnTete peut avoir N CommandeLigneProduit et 1 CommandeLigneProduit est liée à 1 seule CommandeEnTete Définir des Liens ( appelés aussi Jointures) : * Glisser Num Commande de CommandeEnTete (clé primaire) sur Ref Commande de CommandeLigneProduit (clé étrangère) Remarque : Ref Commande n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié d'une clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit . Boîte de dialogue - cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin) - Relation 1 à Plusieurs -Pas de Mise à jour et pas d'Effacement en cascade - Type de Jointure (consulter seulement) Créer Ensat - Informatique Appliquée - Marc Souques Page 19
  • 20. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 3° lien : 1 Produit peut avoir N CommandeLigneProduit et 1 CommandeLigneProduit est liée à 1 seul Produit Définir des Liens ( appelés aussi Jointures) : * Glisser Num Produit de Produit (clé primaire) sur Ref Produit de CommandeLigneProduit (clé étrangère) Remarque : Ref Produit n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié d'une clé primaire qui elle est composée des 2 champs Ref Commande et Ref Produit . Boîte de dialogue - cocher Appliquer Intégrité Référentielle (vérifications des données des liens, voir TEST plus loin ) - Relation 1 à Plusieurs-Pas de Mise à jour et pas d' Effacement en cascade - Type de Jointure (consulter seulement) Créer Convention personnelle (à garder) pour nommer les champs des tables: Clé primaire mono-champ : Numxx (xx pour nom de cette table) Clé étrangère : Refxx (xx pour nom de la table liée) Remarque : On trouvera ailleurs que dans notre établissement des liens (jointures, relations) entre clé primaire et clé étrangère comme ceci par exemple : Numxx clé primaire de table-père et Numxx clé étrangère de table-fils ou Codexx clé primaire de table-père et Codexx clé étrangère de table-fils ou Idxx clé primaire de table-père et Idxx clé étrangère de table-fils ou Refxx clé primaire de table-père et Refxx clé étrangère de table-fils. Soit le même nom de champ pour la clé Primaire et Etrangère !!! Je n'adhère pas, à titre pédagogique, à cette manière de nommer 2 choses différentes avec le même nom mais il faut savoir que cette manière de nommer existe même si elle est ambigüe. Cela vient en partie du fait qu'il existe des logiciels (PowerAMC, WinDesign) qui, à partir d'un MCD, génèrent automatiquement un MLD Relationnel et que ces logiciels reprennent (faute de règle) automatiquement le nom de la clé primaire du MCD (l'identifiant pour être exact) pour créer la clé étrangère. Comme il n'y a pas de règle pour nommer ces 2 types de clés, chacun fait avec sa règle. Vous trouverez donc toutes les combinaisons possibles de clé Primaire et Etrangère, l'essentiel est de bien comprendre le rôle différent de chaque clé : La Clé primaire : - identifie chaque enregistrement d'une table. - est SANS doublon. - est souvent de type numérique et même Numauto (pour générer AUTOMATIQUEMENT un numéro). - est définie comme Primaire car clic sur La Clé étrangère : - pointe vers 1 enregistrement d'une autre table. - est AVEC doublon possible (2 fois la valeur 1 car 2 Commandes peuvent pointer vers le même Num Client 1). - est d'un type qui dépend obligatoirement du type de la clé primaire pointée, JAMAIS Numauto car l'objectif est que l'utilisateur choisisse MANUELLEMENT (ou par liste déroulante) un enregistrement de l'autre table. - est définie comme Etrangère seulement parce que c'est elle qui est liée à la clé primaire de l'autre table. Nous nommerons donc différemment clé primaire et clé étrangère. Ensat - Informatique Appliquée - Marc Souques Page 20
  • 21. - ACCESS 2007 – 2010 - Travail dirigé Facturation – A. Importance des relations dans un SGBD Relationnel Access est un SGBD (Système de Gestion de Base de Données) Relationnel. Tout le fonctionnement d'une application sous Access est basé sur les Relations entre les Tables. La définition des Tables et Relations représente les FONDATIONS de l'application sur lesquelles il 'suffira' ensuite de créer d'autres objets bénéficiant de ces Relations. En France, la méthode la plus utilisée pour créer ces relations est la méthode Merise qui ne sera pas abordée ici. La méthode UML prend peu à peu le relais de la méthode Merise avec les mêmes principes concernant la définition des Données. Rater la définition des Tables et Relations condamne l'application à l'échec !!! B. Des régles dans les relations Règle 1 : L'un des 2 champs du lien est obligatoirement une clé primaire (Num xxx dans mes conventions). L'autre champ est obligatoirement une clé étrangère (Ref xxx dans mes conventions) donc, jamais 2 clés primaires reliées : Num Commande (1) n’a aucun rapport avec Num Produit (CAN001) Attention : certaines clés étrangères ont le symbole car elles sont sous partie d'une clé primaire composée de plusieurs champs : exemple : Ref Produit Règle 2 : Pour qu’une relation (lien ou jointure) puisse être réalisée, les 2 champs liés doivent contenir des données de même type et même longueur. Clé primaire (Num xxx) Clé étrangère (Ref xxx) (NumAuto) donc du Numérique entier Numérique, Entier long Texte, Longueur 6 Texte, Longueur 6 Numérique, Entier long Numérique, Entier long Règle 3 : Les valeurs du champ Ref xxx de la table1 doivent pouvoir être égales … au champ Num xxx de la table2. = Clé primaire (Num xxx) Clé étrangère (Ref xxx) Num Client de Client = 3 Ref Client de CommandeEnTete = 3 Num Produit de Produit = CAN001 Ref Produit de CommandeLigneProduit = CAN001 Etablir un lien entre Num Client (1, 2, 3, 4,…) et Ref Produit (CAN001, EPS001, CAN002, …) n'a AUCUN sens car les valeurs ne seront jamais égales (=). Pour modifier ou Supprimer des relations : (Clic droit sur le trait 1-- ) Enregistrer la mise en forme des relations et Fermer cette fenêtre Relation : IMPORTANT : Le travail réalisé par Accès au niveau des Relations consiste : Voir - à rechercher à partir d'une valeur d'une clé étrangère exemples l'unique (1) valeur égale (=) dans la clé primaire liée. en bas de - à rechercher à partir d'une valeur d'une clé primaire page 5 du les (N) valeurs égales (=) dans la clé étrangère liée. Chapitre I Ensat - Informatique Appliquée - Marc Souques Page 21
  • 22. - ACCESS 2007 – 2010 - Travail dirigé Facturation – C. Tester l'Intégrité Référentielle des Relations L'Intégrité Référentielle est la vérification des données présentes dans la clé primaire et la clé étrangère d'une Relation suite à une opération de saisie, modification ou suppression. 1) Ouvrir la table CommandeEnTete Tenter de saisir dans Ref client de la table CommandeEnTete une valeur n'existant pas dans Num Client de la table Client : 999 999 (et valider l'enregistrement)  erreur car, dans la table Fils CommandeEnTete, saisir dans Ref Client la valeur 999 999 alors que dans la clé primaire Num Client de la table Père "Client" la valeur 999 999 n'existe pas, cela n'est pas valide. Un Fils ne peut PAS faire référence à un Père dont la valeur ne peut être retrouvée dans la table Père. Remarque : un fils peut ne pas faire référence à un père si on l'autorise, une CommandeEnTete pourrait ne pas faire référence à un client (pas de saisie dans Ref Client) mais nous l'avons interdit dans cette application dans le champ Ref Client avec la propriété Null interdit (vide interdit) : OUI et Chaine vide autorisé : NON donc ici la saisie est obligatoire. 2) Ouvrir la table Produit Tenter de supprimer de la table Produit le produit CAN001 (clic dans la marge et bouton Suppr ) alors que ce produit existe (est commandé) dans la table CommandeLigneProduit dans le champ Ref Produit : CAN001.  erreur car supprimer dans la table Père une clé primaire CAN001 alors qu'au moins un enregistrement de la table Fils CommandeLigneProduit y fait référence par la clé étrangère Ref Produit est une suppression non valide. Un Père ne peut PAS être supprimé s'il a encore au moins 1 Fils qui fait référence à lui même. Dans les cas 1) et 2), on ne veut pas d'un Fils pointant vers un Père NON "trouvable". Voila ce que l'intégrité référentielle doit éviter : Null interdit (vide interdit) : NON donc saisie facultative Fils de Père inconnu est autorisé ici. Utiliser le fichier Fac02a2007.accdb pour la suite. (Demander à Voir le diaporama "PV et sa Voiture") Ensat - Informatique Appliquée - Marc Souques Page 22
  • 23. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 7. Résumé des Tables  4 tables avec : Nom des champs, Clé primaire, Type de données et Propriétés de chaque champ (ici propriétés du champ fléché). Plus tard, "Liste de choix" avec liste déroulante  Des Relations entre les tables avec Intégrité référentielle  Des Données saisies Remarque : Créer une application gérant des personnes nécessite l'autorisation ou la déclaration à la CNIL (Commission Nationale Informatique et Liberté) : http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/ Ensat - Informatique Appliquée - Marc Souques Page 23
  • 24. - ACCESS 2007 – 2010 - Travail dirigé Facturation – Ch3. Les requêtes de base La requête permet de faire des TRAITEMENTS sur les DONNEES des TABLES. Il existe plusieurs types de Requête : la plus simple est celle qui sélectionne des enregistrements sur des critères. Possibilité de faire des requêtes qui ajoutent, modifient ou suppriment des enregistrements. 1. Requête sélection Elle permet de sélectionner, trier, calculer des enregistrements sur une ou plusieurs tables reliées entre elles. A. Requête simple sur une seule table Créer une Nouvelle requête, onglet Créer, bouton Création de requête basée sur la table Client. 1) Requête "R01 Client Ou" Question : "Liste des clients avec visualisation des champs Nom, Prénom, Date Entrée et Ville, par ordre alphabétique de leur nom puis prénom, habitant Clamart OU nommés TERIEUR " Saisir les noms des champs ci-dessous par double-clic dans la table affichée en haut de l’écran. Champ: Nom Prénom Date Entrée Ville Table: Client Client Client Client Tri: Croissant Croissant Afficher: X X X X Critères: clamart Ou = entre 2 lignes Ou: TERIEUR de colonnes quelconques Pour une saisie dans un champ de type TEXTE, les " sont ajoutés comme délimiteur "TERIEUR" Exécuter la requête (Afficher les résultats) par le bouton puis revenir en mode création (Définition de la requête en tableau) par le bouton puis passer en mode SQL (Définition de la requête en langage SQL = Structured Query Langage) par clic sur Affichage sous puis par le bouton SELECT Client.Nom, Client.Prénom, Client.[Date Entrée], Client.Ville FROM Client WHERE (Client.Nom = "TERIEUR") OR (Client.Ville = "CLAMART") ORDER BY Client.Nom, Client.Prénom ; SQL est un langage Standard pour tous les Systèmes de Gestion de Bases de Données pour créer, interroger et manipuler les Bases de Données (BD). La commande de base permet la Sélection de Champs de Tables où des conditions sont requises, ordonnés par des critères de tri. SELECT liste de champs FROM tables WHERE conditions de sélection ORDER BY critères de tri Dans Access, dans un premier temps, nous n'aurons pas besoin de la syntaxe SQL pour créer une requête car nous bénéficions du mode Création de la requête sous forme de tableau interactif. Si vous souhaitez vous formez au langage SQL, je vous propose mon Polycopié à demander : SQL pour SGBD.pdf Passer en mode Création : Enregistrer la requête : R01 Client Ou et fermer cette requête. Ensat - Informatique Appliquée - Marc Souques Page 24
  • 25. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 2) Requête "R02 Client Et" Question : "Liste des clients nommés TERIEUR et habitant CLAMART" Champ: Nom Ville Ville Table: Client Client Client Tri: Afficher: X X X Critères: TERIEUR CLAMART Différence entre Ou: ces 2 lignes CLAMART Exécuter la requête : Et = entre 2 colonnes de la même ligne Passer en mode Création : Enregistrer la requête : R02 Client Et et fermer cette requête. 3) Requête "R03 Client Entre" Question : "Liste décroissante des noms des clients inscrits entre le 15/4/2009 et le 1/5/2009" Champ: Nom Date Entrée Table: Client Client Tri: Décroissant Afficher: X X Critères: entre 15/4/2009 et 1/5/2009 Pour une saisie dans un champ de type DATE, les # sont ajoutés automatiquement comme délimiteur de date= #15/04/2009# Opérateurs de comparaison : (faute d’opérateur choisi, c’est l’opérateur = qui est utilisé par défaut) = , > , < , >= , <= , < > (différent), Comme (comparaison avec caractères joker ci-dessous) Possibilité d'utiliser les caractères Jokers vus précédemment (pour les champs de type Texte) : * , ? , # avec l'opérateur Comme pour interpréter ces 'Jokers' Exécuter la requête, Passer en mode Création : Enregistrer la requête : R03 Client Entre et fermer cette requête. 4) Requête "R04 Client Comme" Question : "Recherche des clients dont le Nom commence par la lettre T et inscrits après le 10/4/ de l'année 2009. Afficher aussi la ville " Champ: Nom Date Entrée Ville Table: Client Client Client Tri: Afficher: X X X Critères: T* >10/04/2009 ATTENTION : Ou: Ici, la saisie de "T*" génère automatiquement "Comme T*" mais parfois vous devrez saisir manuellement le Comme pour utiliser * ? ou # Exécuter la requête, Passer en mode Création Possibilités de dimensionner les colonnes, déplacer une colonne, insérer une colonne, insérer une ligne de critères, supprimer une colonne. Enregistrer la requête : R Client Comme. Fermer la fenêtre des requêtes : Exécuter la requête R Client Comme. Ensat - Informatique Appliquée - Marc Souques Page 25
  • 26. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 5) Exercices à faire A FAIRE…1 : nommer la requête R05 Question : "Recherche des produits dont [le Prix est inférieur à 500 €et dont la Désignation commence par "imp" (en minuscule ou majuscule)] ou bien [dont le taux de TVA est supérieur ou égal à 15% (0.15) et dont le Num Produit a un "A" en 2 ième position et un "0" (zéro) en 5 ième position Penser à utiliser l’opérateur Comme " " si vous utilisez des caractères ?, *, #. Classer par désignation. " A FAIRE…2 : nommer la requête R06 Question : "Recherche des clients dont [la Date d’entrée est postérieure au 15 Avril 2009 et habitant le département 93] ou bien [des Toulousains prénommés Jean]. Classer par Nom. " A FAIRE…3 : nommer la requête R07 Question : "Recherche des clients dont [la Date d’entrée est Mai (5)] et qui ne sont pas toulousain. 6) Requête "R08 Commande Mono Table " Question : "Recherche, dans la seule table CommandeEnTete, des Commandes des clients 3, 6 et 34 dont les commandes ne sont pas payées. Afficher tous les champs, trier par client." « A vous d'essayer... » Commentaire : Les résultats ne font apparaître aucune des informations du client (nom, prénom, …) hors mis le numéro. Ces données sont dans les tables Client. Nous allons donc faire des requêtes multi-table pour visualiser les informations client depuis une commande. Ensat - Informatique Appliquée - Marc Souques Page 26
  • 27. - ACCESS 2007 – 2010 - Travail dirigé Facturation – B. Requête multitable simple avec Relation 1) Requête "R09 Commande et son Client" Question : " Liste des Commandes (seulement l'en tête) avec détail de son Nom et Prénom Client." Nous avons lié les Clients et les Commandes dans la fenêtre relation. Ce lien peut être utilisé dans 2 sens : - Pour 1 Commande, j'obtiens son Unique Client - Pour 1 Client, j'obtiens ses N (∞ Commandes. ) Définir une requête basée sur les 2 tables CommandeEnTete et Client avec les champs suivants. = = Ce résultat affiche les Commandes pour lesquelles Ref Client = Num Client Voir le mode SQL de la requête : SELECT [Num Commande], [Date Commande], [Date Echéance], [Ref Client], [Num Client], Nom, Prénom FROM Client INNER JOIN CommandeEnTete ON Client.[Num Client] = CommandeEnTete.[Ref Client]; Clé primaire Clé étrangère AVEC doublons SANS doublon de table "Père" de table "Fils" Attention : Toutes les commandes peuvent ne pas être affichées. Si … le champ Ref Client de CommandeEnTete est vide, Access ne trouve pas un Num Client avec contenu vide EGAL (=) car une clé primaire (Num Client ) ne peut être vide. Ici, toutes les commandes sont affichées car le champ Ref Client est en Null interdit = OUI et Chaine vide autorisée = NON donc saisie obligatoire et jamais effacé. Dans une relation Père - Fils, les Fils pointant vers aucun Père (pas de saisie) ne sont pas affichés dans une requête basée sur les 2 tables liées. - Ce sont des Fils de Père inconnu - Ce Problème peut être géré en modifiant le type jointure sur la Relation Clé primaire - Clé Etrangère. Nous ne le verrons pas pour le moment. Ensat - Informatique Appliquée - Marc Souques Page 27
  • 28. - ACCESS 2007 – 2010 - Travail dirigé Facturation – 2) Requête "R10 Client et ses Commandes" Demander à voir le Question : " Liste des Clients avec leurs Commandes (seulement l'en tête)". Formulaire Client et ses commandes FP Nous avons lié les Clients et les Commandes dans la fenêtre relation. Ce lien peut être utilisé dans 2 sens : Pour 1 Client, j'obtiens ses N (∞ Commandes. ) Pour 1 Commande, j'obtiens son Unique Client Définir une requête basée sur les 2 tables Client et CommandeEnTete avec les champs suivants. = = Ce résultat affiche les Clients avec Num Client = Ref Client Voir le mode SQL de la requête : SELECT Nom, Prénom, [Num Client], [Ref Client], [Num Commande], [Date Commande], [Date Echéance] FROM Client INNER JOIN CommandeEnTete ON Client.[Num Client] = CommandeEnTete.[Ref Client]; Clé primaire SANS doublon Clé étrangère "Père" AVEC doublons "Fils" Attention : Tous les clients peuvent ne pas être affichées. Si … certaines valeurs de Num Client ne sont pas saisies dans le champ Ref Client de CommandeEnTete, Access ne trouve pas l'égalité clé primaire = clé étrangère. Ici, le client 2 n'est pas affiché car aucun enregistrement de Ref Client ne contient la valeur 2. Par contre, le client 3 DURAND est affiché plusieurs fois car plusieurs enregistrements du champ Ref Client contiennent la valeur 3. DURAND possède N commandes : la 1 et la 2. Dans une relation Père - Fils, les Pères n'ayant aucun Fils pointant sur eux ne sont pas affichés dans une requête basée sur les 2 tables liées. Ce sont des Pères 'potentiels' sans Fils. Ce Problème peut être géré en modifiant le Type jointure sur la Relation Clé primaire - Clé Etrangère. Nous ne le verrons pas pour le moment. Ensat - Informatique Appliquée - Marc Souques Page 28
  • 29. - ACCESS 2007 – 2010 - Travail dirigé Facturation – C. Requête multitable avec calcul par enregistrement 1) Requête "R11 Produits commandés et calcul" Question : " Liste des Produits commandés dans les Commandes avec calcul Total HT à payer (prix HT* quantité), Montant de la TVA et Montant TTC de la ligne de commande éventuellement remisé". a) Gérer tables et champs de table On peut créer une requête avec les 4 tables liées ( = ) et les champs suivants. = = = Mais il n'est pas obligatoire de présenter les paires de champs liés. Simplifier. On simplifie encore (pour faire de la place sur ce document pour les futurs calculs). Enregistrer : R11 Produits commandées et calculs (Enregistrement OBLIGATOIRE pour la suite) Ensat - Informatique Appliquée - Marc Souques Page 29
  • 30. - ACCESS 2007 – 2010 - Travail dirigé Facturation – b) Gérer les colonnes de calcul Objectif : Ajouter les 4 calculs Objectif : Ajouter dans une colonne vierge de la requête un champ calculé - Remarque : Il n’y a pas de différence dans les noms de champ entre minuscule et majuscule ! - Calcul de la première colonne calculée Utilisation du générateur d’expression pour champ calculé ( voir l’enseignant pour explications) Nom de la colonne librement choisi Total HT : [prix Ht] * [Quantité] A prendre dans le générateur, sur la Saisie Clavier première ligne Le : sépare le nom de la colonne (à gauche) Exécuter: R11 Produits commandés et calculs du calcul (à droite) Remarque: le générateur d'expression ne présente dans sa fenêtre QUE les colonnes de la requête enregistrées sur disque et non pas celles qui sont affichées à l'écran donc, avant chaque utilisation du générateur, il faut enregistrer la requête. - Calcul de la deuxième et troisième colonne calculée Utilisation du générateur d’expression pour champ calculé : Donc Enregistrer (cela pour enregistrer le précédent champ calculé Total HT dont on a besoin ci- dessous pour les calculs de la TVA) Dans l'expression ci-dessous, seul Total TVA : est saisi au clavier. [Total HT] est pris dans une des colonnes de la requête courante par le générateur d'expression. [Produit] ! [Taux Tva] n'étant pas une des colonnes de la requête courante du générateur d'expression, il faut aller chercher, grâce au générateur d'expression, ce champ dans la rubrique Tables (double-clic), rubrique Produit . A prendre dans le générateur, dans +Tables, Produit, Taux Tva car ce champ n’est pas présent dans les colonnes de la requête courante. Total TVA : [Total HT] * [Produit] ! [Taux TVA] Ici, on a le droit d'utiliser la table Produit car elle est présente en haut de requête dans la liste des tables. Il est INTERDIT d'utiliser des Tables ou Requêtes NON PRESENTES en haut de requête. Remarque : ########## signifie que la colonne n’est pas assez large pour afficher le résultat : élargissez la colonne à la souris comme dans Excel. Enregistrer (pour enregistrer le nouveau champ calculé Total TVA pour pouvoir l'utiliser dans le générateur dans l'expression suivante ci-dessous) Total TTC : [Total HT] + [Total TVA] Exécuter, Enregistrer, Consulter la syntaxe SQL (par le bouton Affichage en haut à gauche). Remarque : pour visualiser en entier le contenu d'une cellule de requête : Touche MAJ + F2 Ensat - Informatique Appliquée - Marc Souques Page 30