Polycop td access 2007 facturation

123
INS ECOLE NATIONA Av de l’Agrobiopo B T Travail Ce documen STITUT NATIONAL POLYTECHNIQUE ALE SUPERIEURE AGRONOMIQUE DE TO ole, BP 107, 31 326 Auzeville Tolosane Tel : 05.3 Informatique Bases de données TD ACCESS l Dirigé :"Facturatio Marc SOUQUES [email protected] Version du 14 avril 2011 nt appartient à : ________________________ OULOUSE 34.32.39.00 on " _____

description

 

Transcript of Polycop td access 2007 facturation

Page 1: Polycop td access 2007  facturation

INSTITUT NATIONAL POLYTECHNIQUEECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE

Av de l’Agrobiopole, BP 107, 31 326 Auzeville

Bases de données

TD

Travail Dirigé

Ce document appartient à : ____________________________

INSTITUT NATIONAL POLYTECHNIQUEECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE

Av de l’Agrobiopole, BP 107, 31 326 Auzeville Tolosane Tel : 05.34.32.39.00

Informatique

Bases de données

TD ACCESS

Travail Dirigé : "Facturation

Marc [email protected]

Version du 14 avril 2011

Ce document appartient à : ____________________________

ECOLE NATIONALE SUPERIEURE AGRONOMIQUE DE TOULOUSE: 05.34.32.39.00

Facturation"

Ce document appartient à : ____________________________

Page 2: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 2

Table des MatièresCH1. BASE DE DONNEES "FACTURATION".............................................................................................................5

1. CAHIER DES CHARGES POUR APPLICATION "FACTURATION" ........................................................................................52. MODELE PHYSIQUE AVEC SES LIENS SUR LE SGBDACCESS........................................................................................5

CH2. LES TABLES DE BASE ..........................................................................................................................................6

1. CONCEPTION ET CONSTRUCTION DE LA BASE DE DONNEES .........................................................................................62. CREER LES TABLES SIMPLES........................................................................................................................................6

A. Créer la table Client ..............................................................................................................................................7B. Créer la table Produit............................................................................................................................................8

3. CREER LES TABLES COMPLEXES..................................................................................................................................9A. Deux régles de base pour créer des tables .......................................................................................................... 10B. Etude des Commandes......................................................................................................................................... 11C. Créer la table CommandeEnTete ........................................................................................................................ 12D. Créer la table CommandeLigneProduit .............................................................................................................. 14E. Conventions de nommage dans les Tables .......................................................................................................... 16F. Importer des données d'Excel dans Access.......................................................................................................... 16G. Exporter des données d'Access vers Excel .......................................................................................................... 16

4. SECURITE DE L'UTILISATION DE L'APPLICATION ......................................................................................................... 175. UTILISER LES TABLES EN MODE INTERACTIF.............................................................................................................. 18

A. Rechercher des données ...................................................................................................................................... 18B. Remplacer des données ....................................................................................................................................... 18C. Tester les boutons… ............................................................................................................................................ 18

6. DEFINIR LES RELATIONS ENTRE LES TABLES .............................................................................................................. 19A. Importance des relations dans un SGBD Relationnel ......................................................................................... 21B. Des régles dans les relations ............................................................................................................................... 21C. Tester l'Intégrité Référentielle des Relations ....................................................................................................... 22

7. RESUME DES TABLES ................................................................................................................................................. 23

CH3. LES REQUETES DE BASE................................................................................................................................... 24

1. REQUETE SELECTION ................................................................................................................................................. 24A. Requête simple sur une seule table ...................................................................................................................... 24B. Requête multitable simple avec Relation ............................................................................................................. 27C. Requête multitable avec calcul par enregistrement............................................................................................. 29D. Erreur à éviter dans les requêtes multitable. ....................................................................................................... 31E. Les fonctions du langage VBA pour les Requêtes................................................................................................ 32F. Exercices à faire .................................................................................................................................................. 35G. Requête avec calcul sur "Regroupement" d'enregistrements .............................................................................. 36H. Exercices à faire .................................................................................................................................................. 36

2. RESUME DES REQUETES............................................................................................................................................. 37

CH4. LES FORMULAIRES DE BASE .......................................................................................................................... 38

1. FORMULAIRE UNITAIRE BASE SUR UNE TABLE ........................................................................................................... 38A. Créer un Formulaire Colonne simple.................................................................................................................. 38B. Utiliser un formulaire .......................................................................................................................................... 38C. Modifier un formulaire ........................................................................................................................................ 39

2. FORMULAIRE TABULAIRE BASE SUR UNE REQUETE.................................................................................................... 43A. Créer la requête source du futur Formulaire ...................................................................................................... 43B. Créer un formulaire Tabulaire basé sur la requête............................................................................................. 44C. Ajouter des contrôles ........................................................................................................................................... 44D. Exercices à faire .................................................................................................................................................. 45

3. RESUME DES FORMULAIRES....................................................................................................................................... 45

CH5. LES TABLES AVEC LISTES DEROULANTES DE CHOIX POUR CLE ETRANGERE........................... 46

1. TABLES ACTUELLES BASIQUES................................................................................................................................... 462. CHAMP CLE ETRANGERE AVEC LISTE DEROULANTE DE CHOIX .................................................................................. 46

A. Modifier propriétés Liste de choix des champs clés étrangères .......................................................................... 47B. Exercice à faire… ................................................................................................................................................ 49

CH6. BILAN DE L'APPLICATION............................................................................................................................... 51

1. DES TABLES ............................................................................................................................................................... 512. DES REQUETES .......................................................................................................................................................... 513. DES FORMULAIRES .................................................................................................................................................... 51

Page 3: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 3

CH7. FACTURATION: EXTENSIONS A FAIRE SEUL ............................................................................................ 52

1. CAHIER DES CHARGES POUR LES TABLES ................................................................................................................... 52A. Table simple......................................................................................................................................................... 52B. Table complexe.................................................................................................................................................... 52

2. CAHIER DES CHARGES POUR LES REQUETES .............................................................................................................. 53A. Requête simple ..................................................................................................................................................... 53B. Requête multitable ............................................................................................................................................... 53

3. CAHIER DES CHARGES POUR LES FORMULAIRES ........................................................................................................ 55A. Formulaire simple ............................................................................................................................................... 55B. Formulaire Tabulaire basé sur une requête ........................................................................................................ 55C. Formulaire "Produit" à compléter ...................................................................................................................... 55

CH8. L'ETAT .................................................................................................................................................................... 56

1. CREER UN ETAT ......................................................................................................................................................... 56A. Etat basé sur une table ........................................................................................................................................ 56B. Etat basé sur une requête .................................................................................................................................... 57

2. RESUME DES ETATS ................................................................................................................................................... 60

CH9. LES FORMULAIRES COMPLEXES .................................................................................................................. 61

1. FORMULAIRE AVEC SOUS-FORMULAIRE ..................................................................................................................... 612. FORMULAIRE AVEC SOUS FORMULAIRE COMPLEXE ................................................................................................... 63

A. Version basée sur 2 Tables (pour FP) et 2 Tables (pour SF). ............................................................................. 63B. Version basée sur 3 niveaux de Tables. ............................................................................................................... 64C. Version avec 2 sous formulaires de même niveau. .............................................................................................. 64

3. FORMULAIRE AVEC GRAPHIQUE ................................................................................................................................. 67A. Graphique simple basé sur une Table ................................................................................................................. 67

4. FORMULAIRE MENU PRINCIPAL ................................................................................................................................. 695. RESUME SUR LES FORMULAIRES ................................................................................................................................ 70

CH10. LES MACROS ........................................................................................................................................................ 72

1. MACRO DE DEMARRAGE AUTOMATIQUE : AUTOEXEC ............................................................................................... 722. MACROS POUR OUVRIR FORMULAIRES ET ETATS........................................................................................................ 72

A. Créer la macro .................................................................................................................................................... 72B. Attacher une macro à un événement d’un contrôle Bouton................................................................................. 73

CH11. LES RECHERCHES .............................................................................................................................................. 74

1. RECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MONO RESULTAT ............................................................. 75A. Rechercher un client sur son Nom Prénom par liste déroulante ......................................................................... 75B. Auto-Actualiser la liste déroulante sur sa définition ........................................................................................... 77

2. RECHERCHE MONO CRITERE, MONO VALEUR DU CRITERE, MULTI RESULTATS ........................................................... 77A. Rechercher des clients sur leur ville par liste déroulante ................................................................................... 77

3. RECHERCHE MONO CRITERE, MULTI VALEURS DU CRITERE, MULTI RESULTATS ......................................................... 804. RECHERCHE MULTI CRITERES, MONO VALEUR DU CRITERE, MULTI RESULTATS ......................................................... 80

CH12. LES FORMULAIRES COMPLEXES SUITE ..................................................................................................... 82

1. SOUS FORMULAIRE BASE SUR REQUETE AVEC CALCULS ............................................................................................ 82

CH13. INTRODUCTION AUX BASES DE DONNEES ET A ACCESS ................................................................... 83

1. UN SYSTEME DE GESTION DE BASES DE DONNEES .................................................................................................... 832. UNE APPLICATION DE BASE DE DONNEES.................................................................................................................. 833. UNE BASE DE DONNEES............................................................................................................................................. 834. 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 ...................................................................................................................................... 85B. Modifier la table Produit ..................................................................................................................................... 85C. Créer la table Fournisseur .................................................................................................................................. 86D. Créer la table Intermédiaire ProdFour ............................................................................................................... 86E. Tirer les Relations avec Intégrité Référentielle: .................................................................................................. 88F. 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 ..................................................................................................................................................... 89B. Requête multitable ............................................................................................................................................... 89

Page 4: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 4

CH16. CORRECTION EXTENSION : FORMULAIRES.............................................................................................. 91

A. Formulaire simple ............................................................................................................................................... 91B. Formulaire Tabulaire basé sur une requête ........................................................................................................ 91C. 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. IMAGES ET TABLE : VERSION1 BASEE SUR CHAMP OLE ............................................................................................ 93A. Gérer un champ OLE .......................................................................................................................................... 93B. Gérer un contrôle de formulaire pour afficher l'image ....................................................................................... 93

2. IMAGES ET TABLE : VERSION 2 BASEE SUR CHAMP TEXTE ET MACRO D'AFFECTATION ............................................. 943. IMAGES ET TABLE : VERSION 3 BASEE SUR CHAMP TEXTE ET PROCEDURE-VBA D'AFFECTATION ............................ 974. RESUME :SAISIR, STOCKER, MODIFIER ET SUPPRIMER DES IMAGES DANS DES ENREGISTREMENTS DE TABLE. .......... 99

CH19. LES TABLES AVEC CHAMPS A LONGUEUR VARIABLE ........................................................................ 100

1. CHAMP DE TYPE MEMO............................................................................................................................................ 1002. CHAMP DE TYPE PIECE JOINTE ................................................................................................................................. 1003. CHAMP AVEC PLUSIEURS VALEURS .......................................................................................................................... 101

A. Démarche Classique Relationnelle.................................................................................................................... 1024. FORMULAIRE BASE SUR UN MODELE DE FORMULAIRE.............................................................................................. 105

A. Créer un modèle de formulaire.......................................................................................................................... 105B. 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 ......................................................................................... 1062. MODE PARTAGE DE DONNEES ENTRE PLUSIEURS UTILIS ATEURS EN RESEAU LOCAL ................................................ 107

CH21. LES MACROS AVANCEES................................................................................................................................ 108

1. TESTER LES EVENEMENTS DECLANCHANT DES MACROS DANS UN FORMULAIRE ...................................................... 1082. MACRO CONDITIONNELLE ATTACHEE A UN EVENEMENT ......................................................................................... 1093. REFERENCE DES ACTIONS DES MACROS .................................................................................................................. 111

CH22. MODIFICATION DES DONNEES DES TABLES ........................................................................................... 113

1. MODIFICATION MANUELLE ...................................................................................................................................... 1132. MODIFICATION AUTOMATIQUE PAR REQUETE ......................................................................................................... 114

A. La requête action ............................................................................................................................................... 114B. La requête action paramétrée par formulaire ................................................................................................... 115

3. MODIFICATION AUTOMATIQUE PAR MACRO ............................................................................................................ 117A. Mise à jour Automatique Invisible du stock de Produit sur événement Saisie de la Quantité commandée ....... 117

CH23. TRAITEMENTS DE SYNTHESE ...................................................................................................................... 120

1. FORMULAIRE TABLEAU CROISE DYNAMIQUE (TCD) .............................................................................................. 120A. Créer la requête source du futur formulaire ..................................................................................................... 120B. Créer le formulaire TCD basé sur la requête.................................................................................................... 121

CH24. LA BASE DE DONNEES FINALE..................................................................................................................... 123

Page 5: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 5

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 AccessStructure de la base de données à créer.

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

Clé primaireSANS doublon

Cléétrangère

AVECdoublons

Cléétrangère

AVECdoublons

Cléétrangère

AVECdoublons

Clé primaireSANS doublon

Clé primaireSANS doublon

basée sur2 champs

Clé primaireSANS doublon

Légende :Clé primaire mono ou multi champClé étrangère liée à une clé primaire

Page 6: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 6

Ch2. Les Tables de baseObjectif 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éesLorsque 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 composentla 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émentstechniques (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 quicomposent 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émentstechniques (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 Physiquemais il est recommandé de se documenter sur les cours de Modélisation des Données quipermettent 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 quelquesrè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 rapideen haut d'écran et valider OK.

2. Créer les Tables SimplesNous allons créer les tables Client et Produit qui sont simples car chaque enregistrement ne fait pasré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'

Page 7: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 7

A. Créer la table ClientNom du Champ Type de données PropriétésNum Client NuméroAutoNom Texte

(Attention : le typeTexte est limité à255 caractères !)

Taille : 25Format : > (conversion en Majuscule)Null interdit : OUI (saisie obligatoire)Chaine vide autorisée : NON

Prénom Texte Taille : 15 Null interdit : OUIChaine vide autorisée : NON

Adresse Texte Taille : 30Code Postal Texte (pas Num car on

ne fait pas de calcul surles codes postaux !)

Taille : 5Null interdit : NON doncsaisie facultative

Ville Texte Taille : 25, Format : > (Majuscule)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é chaqueenregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans 2enregistrements de ce champ sont interdites (pas de doublons: 2 personnes ne doivent pas avoir le mêmenuméro de client 3).Définir une clé primaire sur le champ: Num Client en sélectionnant ce champ puis barre d’outilsClé 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 ClientOn souhaite que le couple Nom Prénom soit unique, interdire 2 fois LECLERC Alain. Clic sur Index :Donner librement un Nom à un Index : NomPrenomChoisir dans la liste déroulante les 2 champs à indexer : Nom puis PrénomSélectionner la ligne NomPrenom et saisir Unique : Ouipour éviter les doublons sur ce couple de champsEnregistrer 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'enregistrement3 en DURAND Alain pour avoir :

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

Fonction Date() retournant ladate du jour. On peut latrouver par , Fonction,

Fonction intégrées,Date/heure, Date

Un nombre qui s’incrémenteautomatiquement à chaque nouveau

client saisi : 1 puis 2 puis 3

Voir exemple en bas de page

Si besoin de plus de 255caractères, utiliser le

type Mémo (taille illimitée)

(Null = VIDE)

Page 8: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 8

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 champNum Produit Texte Taille : 6Désignation Texte Taille : 60Prix Ht Monétaire

(pour afficher €uros)Valide si : >=3Message si erreur :Vérifier le minimum (>=3 €)

Taux Tva Numérique Taille : Réel simple (Touche F1 pour l’Aide)Format : Pourcentage (%)Valeur par défaut : taper 0.196 pour obtenir

0,196 (virgule à la place du point)Valide si : 0.196 Ou 0.055Message si erreur : Vérifier le taux

Le Prix Ttc est une valeur calculée (Prix Ttc = Prix Ht * (1+Taux Tva)). On ne stocke pasdans une Table un champ calculé car on risque l'erreur d'avoir calculé et stocké un PrixTtc surun ancien Prix Ht : exemplePrix 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 aurabesoin 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é chaqueenregistrement de la table (chaque élément de la population). Deux mêmes valeurs dans deuxenregistrements de ce champ sont interdites (pas de doublons: 2 produits ne doivent pas avoir le mêmenuméro de produit).Définir une clé primaire sur le champ: Num Produit en sélectionnant ce champ puis barre d’outilsClé 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 ProduitOn 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ésignationComplé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 estici MONO-Champ.Par contre, le résultat est bien stocké dans les index :

ATTENTION :Num Produit Texte Indexé : Oui sans doublons car Clé PrimaireDésignation Texte Indexé : Oui sans doublons sans être Clé primaireLa clé primaire est le champ qui identifie chaque enregistrement de la table, c'est cette information quiest 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 ProduitsFaire 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 :

Si besoin de plus de 255 caractères,utiliser le type Mémo (taille illimitée)

Ici, le Num Produit n'est pas en NuméroAutocar on veut gérer notre propre Numérotation :3 lettres pour la marque du produit et3 chiffres pour le rang du produit dans la marque(ACE002 pour le 2° produit de marque ACER)

Page 9: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 9

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 ErreurCAN001 Imprimante laser

Canon type 11 puis 300 19.6% Erreur sur le Prix

MIC001 Initiation àACCESS pourles Nuls

15 20.6% puis 5.5% Erreur sur la TvaLa tva sur les livres est à 5.5%

CAN001 Imprimante 1000 19.6% Erreur sur Num Produitdétectée seulement après saisiede Taux Tva (doublon dans cléprimaire avec le 1° enregistrement) :modifier ce Num Produit enCAN002

EPS001 Imprimante 75 19.6% Erreur sur Désignation(doublon sur propriété "OUIsans doublon"), modifier cetteDésignation avec ImprimanteJet 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 lamise 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 latable signalée par (ce symbole sur une ligne vierge indique la position pour ajouter desenregistrements) 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 à gauchede Num Produit puis Suppr du clavier. Fermer la table :

3. Créer les Tables ComplexesNous 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 etchaque 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 etun Produit fait référence à au plus N Commandes où il est commandé.

erreur

erreur

erreurerreur

Page 10: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 10

A. Deux régles de base pour créer des tablesSi 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œur1) Relation Père - Fils :Un Père peut avoir de 0 à N Fils, un Fils peut avoir de 0 à 1 Père.Pour gérer cette relation, on ajoute dans la table Filsun champ Ref Père contenant la valeur de l'identification du Père.

Table Fils Table Père

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œurUn Frère peut avoir de 0 à N Sœurs, une Sœur peut avoir de 0 à N Frères.Pour gérer cette relation, on ajoute une nouvelle table intermédiaire avec

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.

Clé étrangèreAVEC doublons

Clé étrangèreAVEC doublons

x

x

x

x

xx

x

PERE FILS

x

x

xx

xx

x

FRERE SOEUR

x

un champ Ref Soeurcontenant la valeur del'identification de Sœur

un champ Ref Frèrecontenant la valeur del'identification de Frère

D'éventuels champsdépendants de frèreET sœur.

Fils de pèreinconnu

Clé primaireSANS doublon

Clé primaireSANS doublon

Clé étrangèreAVEC doublonsClé primaire

SANS doublon

Père sans fils ou ayantperdu son ou ses fils

Page 11: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 11

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.

Table Client

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 Croisement : Commande - Produit

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

Table Commande

Table CommandeTable Produit

Convention :gras +soulignéindique uneclé primaire

Page 12: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 12

C. Créer la table CommandeEnTeteUn 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 FilsUn 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 champNum 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 encompte les produits commandés car ils sont en nombre variable.Nom du Champ Type de données PropriétésNum Commande NuméroAutoRef Client(pour futur lien vers NumClientde table CLIENT)

Numérique Taille : Entier long ; PAS de valeur par défautNull interdit : OUI donc saisie obligatoire d'1 valeur deChaine vide autorisée : NON(pour future compatibilité avec Num Client de la tableClient 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éValeur par défaut : Date( ) + 30Afficher 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 quiest clé primaire de la table CLIENT)

Définir la clé primaire sur le champ : Num Commande

Enregistrer la table : CommandeEnTete

Passer en mode Feuille de données :Saisir :Num Commande Ref Client Date Commande Date Echéance Payée

1 (Automatique) 3 (saisir une date) (saisir une date) Cocher pour Oui2 (Automatique) 3 (valider date) (valider date) Rien pour Non3 (Automatique) 1 (valider date) (saisir une date) Cocher pour Oui

Il y a 3 CommandeEnTete.

Un nombre qui s’incrémenteautomatiquement à chaque nouvellecommande saisie : 1 puis 2 puis 3

Donnée existant dans la cléprimaire Num Client de la

table Client

Aujourd'hui+ 30 jours

Table Client

Page 13: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 13

a) La Commande 1 fait référence à un seul client (le 3) par le champ Ref Client.Num Commande Ref Client Date

CommandeDate Echéance Payée

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 DateCommande

Date Echéance Payée

1 32 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 parexemple.

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'à 1des 3 clients identifiés (1, 2, 3) dans la clé primaire Num Client de la tableClient.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 LISTESDEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Client par une liste déroulante neproposant 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 lePré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 2tables. Il a ici un nom peu compréhensible pour l'utilisateur.La propriété Légende des champs permet de gérer un nom desubstitution 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 listesdéroulantes de clés étrangères dès la création des Tables.

Page 14: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 14

D. Créer la table CommandeLigneProduitUne 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œur vue précédemment.Un Frère fait référence à au plus plusieurs SœursUne 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 nouvelletable 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 champNum 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 champNum 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 dedonnées

Propriétés

Ref Commande(pour lien vers

Num Commandede table CommandeEnTete)

Numérique Taille : Entier long ; PAS de valeur par défaut(pour future compatibilité avec Num Commande de la tableCommandeEnTete qui est en NuméroAuto donc enNumérique-Entier long),Null interdit : OUI ; Chaine vide autorisée : NON

Ref Produit(pour lien versNum Produit

de table Produit)

Texte Taille : 6 ; PAS de valeur par défaut,(pour future compatibilité avec Num Produit de la tableProduit qui est Texte de longueur 6)Null interdit : OUI ; Chaine vide autorisée : NON

Quantité(quantité commandée d'unproduit d'une commande)

Numérique Taille : Réel simple (au cas où on vendrait 1 boite etdemie de 10 DVD = 15 DVD = 1,5 boite)Valeur par défaut : 1

Ici, la clé primaire n'est pas mono-champ. C'est le couple 1 - CAN001 qui identifieun Produit commandé (CAN001) dans le cadre d'une Commande (1).Définir une clé primaire : sélectionner les 2 premierschamps Ref Commande, Ref Produit par un glissé à lasouris (dans la colonne de gauche) et les définir par le boutonClé primaire comme clé primaire composée :Attention : Ref Commande et Ref Produit ne sont pas individuellement clé primairemais le couple Ref Commande + Ref Produit est clé primaire.

Il n'y a qu'1 Clé primaire par Table.

Page 15: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 15

Enregistrer la table : CommandeLigneProduit(Ce nom intégre Commande et Produit : les 2 tables croisées)Passer en mode Feuille de données :

Saisir :Ref Commande Ref Produit Quantité

1 CAN001 41 EPS001 22 CAN001 12 CAN002 32 MIC001 5

Nous avons donc 5 Produits commandées dans CommandeLigneProduit répartis sur 2 Commandes.La Commande 1 (Ref Commande) contient 2 Produits, CAN001 et EPS001La 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 CommandeEnTeteFermer 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 manuellementCAN001 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 CommandeLigneProduitqu'à 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 LISTESDEROULANTES POUR CLE ETRANGERE) la saisie dans Ref Produit par une liste déroulante neproposant QUE les Produits qui existent dans la clé primaire Num Produit de la table Produit.Pour faciliter le choix du produit commandé, nousprésenterons en plus de Num Produit, laDésignation du produit en classant ces désignationsde produits par ordre alphabétique.

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

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

Donnée existant dans la cléprimaire Num Produit de la

table Produit

Table Produit

Table CommandeLigneProduit

Page 16: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 16

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 faciliterl'écriture de ces noms en programmation VBA et gérer dans ce cas la propriété du champ Légende quipropose un nom de substitution (avec espaces et accents : Date d'Echéance) pour les affichages dans lesformulaires

- 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 AccessLe 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 ensuitené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 ExcelLe 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.

Page 17: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 17

4. Sécurité de l'utilisation de l'applicationPar défaut, Access est configuré comme ci-dessous dans Bouton Office (Fichier dans version2010), Options Access, Centre de gestion de la confidentialité, Paramètres de centre de gestion dela 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 (programmeVBA 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'optionActiver toutes les macros. C'est non recommandé etpotentiellement dangereux car ainsi, pour toutes lesapplications, du code malsain peut être exécuté.

3. Garder la configuration ci-dessus pour le Paramètre des macros à Désactivé mais définir undossier où vous rangerez les applications de confiance (les vôtres par exemple). Dans la fenêtredu Centre de gestion de la confidentialité, Emplacements approuvés, ajouter un nouvelemplacement pour un dossier (et éventuellement ses sous-dossiers) pour obtenir un résultat de cetype. 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 lestables.

Page 18: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 18

5. Utiliser les tables en mode InteractifA. Rechercher des donnéesOuvrir 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 Suivant1) 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#*)

B. Remplacer des donnéesOnglet 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 modifierb) 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

Ce que vous cherchez 'bd'est ou pas une sous partiedu 'champ entier' ?

Page 19: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 19

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

/ Relations .

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) et1 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

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 et1 CommandeLigneProduit est liée à 1 seule CommandeEnTeteDéfinir des Liens ( appelés aussi Jointures) :

* Glisser Num Commande de CommandeEnTete (clé primaire) surRef 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

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

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

Un-à-un : erreur probable

Page 20: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 20

3° lien :1 Produit peut avoir N CommandeLigneProduit et1 CommandeLigneProduit est liée à 1 seul ProduitDéfinir des Liens ( appelés aussi Jointures) :

* Glisser Num Produit de Produit (clé primaire) surRef Produit de CommandeLigneProduit (clé étrangère)

Remarque : Ref Produit n'est pas un champ clé primaire (malgré le symbole clé ) mais la moitié d'uneclé 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) entreclé primaire et clé étrangère comme ceci par exemple :Numxx clé primaire de table-père et Numxx clé étrangère de table-fils ouCodexx clé primaire de table-père et Codexx clé étrangère de table-fils ouIdxx clé primaire de table-père et Idxx clé étrangère de table-fils ouRefxx 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 nommais 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èrentautomatiquement un MLD Relationnel et que ces logiciels reprennent (faute de règle) automatiquement le nom dela 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 debien 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) unenregistrement de l'autre table.

- est définie comme Etrangère seulement parce que c'est elle qui est liée à la clé primaire del'autre table.

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

Page 21: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 21

A. Importance des relations dans un SGBD RelationnelAccess 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 pasabordée ici. La méthode UML prend peu à peu le relais de la méthode Merise avec les mêmes principesconcernant 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 relationsRè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é primairecomposé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 desdonné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 6Numé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 = 3Num 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 :- à rechercher à partir d'une valeur d'une clé étrangèrel'unique (1) valeur égale (=) dans la clé primaire liée.

- à rechercher à partir d'une valeur d'une clé primaireles (N) valeurs égales (=) dans la clé étrangère liée.

Voirexemplesen bas depage 5 duChapitre I

Page 22: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 22

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 etla clé étrangère d'une Relation suite à une opération de saisie, modification ou suppression.

1) Ouvrir la table CommandeEnTeteTenter de saisir dans Ref client de la table CommandeEnTeteune 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 alorsque dans la clé primaire Num Client de la table Père "Client" la valeur 999 999 n'existe pas, cela n'estpas valide.

Un Fils ne peut PAS faire référence à un Père dont la valeur ne peut être retrouvéedans la table Père.

Remarque : un fils peut ne pas faire référence à un père si on l'autorise, une CommandeEnTetepourrait ne pas faire référence à un client (pas de saisie dans Ref Client) mais nous l'avons interdit danscette application dans le champ Ref Client avec la propriété Null interdit (vide interdit) : OUI et Chainevide autorisé : NON donc ici la saisie est obligatoire.

2) Ouvrir la table ProduitTenter 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 lechamp Ref Produit : CAN001.

erreur car supprimer dans la table Père une clé primaire CAN001 alors qu'au moins unenregistrement de la table Fils CommandeLigneProduit y fait référence par la clé étrangère Ref Produitest 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 :

Utiliser le fichier Fac02a2007.accdb pour la suite.

(Demander à Voir le diaporama "PV et sa Voiture")

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

Page 23: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 23

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é).

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 à laCNIL (Commission Nationale Informatique et Liberté) :http://www.cnil.fr/vos-responsabilites/declarer-a-la-cnil/

Plus tard, "Liste de choix" avecliste déroulante

Page 24: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 24

Ch3. Les requêtes de baseLa requête permet de faire des TRAITEMENTS sur les DONNEES des TABLES. Il existe plusieurstypes 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électionElle permet de sélectionner, trier, calculer des enregistrements sur une ou plusieurs tablesreliées entre elles.

A. Requête simple sur une seule tableCré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, parordre 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 VilleTable: Client Client Client Client

Tri: Croissant CroissantAfficher: X X X XCritères: clamart

Ou: TERIEUR

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 puisrevenir en mode création (Définition de la requête en tableau) par le bouton puispasser en mode SQL (Définition de la requête en langage SQL = Structured Query Langage) par clicsur Affichage sous puis par le bouton

SELECT Client.Nom, Client.Prénom, Client.[Date Entrée], Client.VilleFROM ClientWHERE (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 laSé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êtecar 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.

Ou = entre 2 lignesde colonnes quelconques

Page 25: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 25

2) Requête "R02 Client Et"Question : "Liste des clients nommés TERIEUR et habitant CLAMART"

Champ: Nom Ville VilleTable: Client Client Client

Tri:Afficher: X X XCritères: TERIEUR CLAMART Différence entre

Ou: ces 2 lignes CLAMART

Exécuter la requête :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éeTable: Client Client

Tri: DécroissantAfficher: X XCritères: entre 15/4/2009 et 1/5/2009

Pour une saisie dans un champ de type DATE, les # sont ajoutés automatiquementcomme 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/ del'année 2009. Afficher aussi la ville "

Champ: Nom Date Entrée VilleTable: Client Client Client

Tri:Afficher: X X XCritères: T* >10/04/2009

Ou:

Exécuter la requête, Passer en mode CréationPossibilités de dimensionner les colonnes, déplacer une colonne, insérer une colonne, insérer une lignede 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.

Et = entre 2 colonnesde la même ligne

ATTENTION :Ici, la saisie de "T*" génère

automatiquement "Comme T*" maisparfois vous devrez saisir

manuellement le Commepour utiliser * ? ou #

Page 26: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 26

5) Exercices à faireA 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 2ième position et un "0" (zéro) en 5 ième positionPenser à utiliser l’opérateur Comme " " si vous utilisez des caractères ?, *, #.Classer par désignation. "

A FAIRE…2 : nommer la requête R06Question : "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 R07Question : "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 34dont 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 unecommande.

Page 27: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 27

B. Requête multitable simple avec Relation1) 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];

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 contenuvide EGAL (=) car une clé primaire (Num Client ) ne peut être vide.Ici, toutes les commandes sont affichées car le champ Ref Client esten 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ésdans 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 laRelation Clé primaire - Clé Etrangère.Nous ne le verrons pas pour le moment.

Clé primaireSANS doublonde table "Père"

Clé étrangèreAVEC doublonsde table "Fils"

=

Page 28: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 28

2) Requête "R10 Client et ses Commandes"Question : " Liste des Clients avec leurs Commandes (seulement l'en tête)".

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], [NumCommande], [Date Commande], [Date Echéance] FROM Client INNER JOIN CommandeEnTete

ON Client.[Num Client] = CommandeEnTete.[Ref Client];

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 champRef 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ésdans 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 Typejointure sur la Relation Clé primaire - Clé Etrangère.Nous ne le verrons pas pour le moment.

Clé primaireSANS doublon

"Père"

=

Demander à voir leFormulaire Client etses commandes FP

Clé étrangèreAVEC doublons

"Fils"

Page 29: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 29

C. Requête multitable avec calcul par enregistrement1) Requête "R11 Produits commandés et calcul"Question : " Liste des Produits commandés dans les Commandes avec calcul Total HT à payer (prixHT* quantité), Montant de la TVA et Montant TTC de la ligne de commande éventuellement remisé".

a) Gérer tables et champs de tableOn 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)

= = =

Page 30: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 30

b) Gérer les colonnes de calculObjectif : 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)

Total HT : [prix Ht] * [Quantité]

Saisie ClavierExécuter:

Remarque: le générateur d'expression ne présente dans sa fenêtre QUE les colonnes de la requêteenregistrées sur disque et non pas celles qui sont affichées à l'écran donc, avant chaqueutilisation 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 .

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 legé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

A prendre dans le générateur, sur lapremière ligne

R11 Produits commandés et calculs

Nom de la colonnelibrement choisi

Le : sépare le nom de la colonne (à gauche)du calcul (à droite)

A prendre dans le générateur, dans +Tables, Produit, Taux Tva car cechamp n’est pas présent dans les colonnes de la requête courante.

Page 31: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 31

- Calcul de la quatrième colonne calculéeIci nous voulons un calcul conditionnel : Total TTC remisé est égal à :Si (Total TTC > 1000 alors afficher Total TTC * (1 - 0,1) sinon afficher Total TTC)

Fonction VraiFaux() (IIf en V 2010) correspond à SI() est à prendre dans le générateur, dans :+Fonctions, Fonction intégrée, Déroulement prog.

Total TTC remisé : VraiFaux([Total TTC]>1000 ; [Total TTC]*(1-0,1) ; [Total TTC])

La fonction VraiFaux a la même logique que le SI d'Excel : (condition ; valeur si Vrai ; valeur si Faux)La fonction VraiFaux() s'écrit Iif() en version 2010 et en syntaxe anglaise.

Remarque : Ici, la remise est de 10 % constant dans le calcul.Une solution plus avancée irait chercher le Taux de remise (10% ou 0,1) dans une table de Paramètrespour ne pas avoir la valeur 0,1 pratiquement figée car difficilement modifiable dans ce calcul par unNON spécialiste des requêtes d'Access.De même pour le Seuil de 1 000 €, il serait préférable qu'il soit stocké dans une table de Paramètres pourqu'un simple utilisateur puisse modifier cette valeur sans avoir à faire appel à un informaticien.Cette table Paramètres pourrait être structurée ainsi avec un champ par paramètre et donc n'avoir qu'unseul enregistrement :

Penser à gérer en mode Création pour chacune des 4 colonnes de calcul un format Monétaire parle bouton Feuille de propriétés :

Attention : parfois l'application de ce format ne marche pas. Fermer la requête et la réouvrir !

D. Erreur à éviter dans les requêtes multitable.

Les tables que vous utilisez dans le haut de larequête graphique doivent TOUJOURS êtreliées. Nombre d'enregistrement de la requête :

Si vous voulez utiliser seulement les champsde la table Client et de la tableCommandeLigneProduit, vous ne pouvez passeulement choisir 2 tables NON liées car lenombre d'enregistrement de la réponse seraitde ,c'est-à-dire la multiplication des 43 enregistrements de la table Client par les 18 enregistrements de latable CommandeLigneproduit ce qui n'a aucun sens pour notre travail.

Eventuellement !taper 0 virgule 1

et non pas0.1 suivant votre

machine !

Exécuter, Enregistrer et Fermer.

FIN du TD2

Page 32: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 32

E. Les fonctions du langage VBA pour les RequêtesOuvrir Fac02a2007.accdb pour ce Td 3.

Access dispose d'une large liste de fonctions en version anglaise et française issues du langage VBA.La syntaxe anglaise est utilisable partout, la version française est proposée dans le générateurd'expression mais on peut aussi saisir la syntaxe anglaise en l'écrivant à la main (elle est ensuite traduiteen syntaxe française). Par ailleurs, l'aide d'Access ne répertorie que la syntaxe anglaise, si l'onprogramme en VBA, c'est encore la version anglaise qu'il faut utiliser et enfin, certaines fonctionsanglaises ne sont pas traduites en Français.- Depuis votre espace de travail Access, Voir l'aide sur les fonctions par F1 > Automation etprogrammabilité > Fonctions.- L'aide est mieux structurée depuis l'éditeur du langage VBA accessible par ALT + F11 puisF1 > Visual basic-Manuel de référence du langage > Fonctions (pour un classement alphabétique) ouIndex/Listes (pour un classement thématique).Quelques exemples de fonctions parmi des centaines :1) Fonctions MathématiquesSyntaxe anglaise Syntaxe française Définition Exemple RésultatsRound(expression;n) Round( ) Arrondir à n

décimalesRound(123,456;2) 123,46

Int(expression) Ent( )Int() en V 2010

Donner la partieentière sans arrondir

Int(10/3) 3

2) Fonctions Date et HeureSyntaxe anglaise Syntaxe française Définition Exemple RésultatsDate() Date( ) Donner la date du jour Date() 19/10/2009Time() Temps( ) Donner l'heure courante Time() 09:55:51Now() Maintenant( ) Donner date et heure

courantesNow() 19/10/2009

09:55:51Day(date) Jour( ) Donner le jour de la

date (1-31)Day(19/10/2009) 19

Month(date) Mois( ) Donner le mois d'unedate (1-12)

Month(19/10/2009)

10

Year(date) An( )Année() en V 2010

Donner l'année d'unedate

Year(19/10/2009) 2009

DateSerial() SerieDate() Construit une date àpartir de 3 nombres

DateSerial(2009;12; 31)

31/12/2009

TimeSerial() SerieHeure() Construit une heure àpartir de 3 nombres

TimeSerial(23;59; 30

23:59:30

3) Fonction Chaîne de caractèresSyntaxe anglaise Syntaxe française Définition Exemple RésultatsUCase(expression)(Up)

Majuscule( ) Convertir enmajuscule

UCase("abc") ABC

LCase(expression)(Low)

Minuscule( ) Convertir enminuscule

LCase("DEF") def

Left(expression;n) Gauche( ) Extraire n caractères àpartir de la gauche

Left("abcdef";4) abcd

Right(expression;n) Droite( ) Extraire n car à partirde la droite

Right("abcdef",2) ef

Mid(expression;position; longueur)(Midle pour milieu)

ExtracChaine( ) Extraire une souschaine à partir deposition sur longueur

Mid("abcdef";3;2) cd

Len(expression)(Length)

NbCar( ) Donner la longueur Len("abcdef") 5

Page 33: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 33

Chr(nombre) Car() Donner le caractère ducode ASCII fourni

Chr(65)Chr(13) & Chr(10)

A<retour à la ligne>

Concaténer (juxtaposer) des chaines de caractères :Utiliser l'opérateur de concaténation & : "abc" & " " & "def" donne "abc def"On peut aussi utiliser l'opérateur + mais parfois ambigüe avec somme : "abc" + " " + "def" donne "abc def"

4) Fonctions de DomaineCes fonctions effectuent des regroupements sur des domaines et produisent des résultats analogues auxrequêtes de regroupement.Gros avantage : en une fonction totalement autonome, on a l'équivalent d'une requête travaillant surdes données (Table ou Requête), effectuant par le nom de la fonction (Compter, Sommer, …) un calculsur un champ (ou une expression) dont les enregistrements utilisés peuvent éventuellement êtresélectionnés par une condition (filtre).

Forme générale :FonctionDeDomaine ("champ_ou_expression" ; "table_ou_requête" ;" filtre")

Syntaxeanglaise

Syntaxefrançaise

Définition Exemple Résultats

DCount() CompteDom( ) Compte le nombred'enregistrements

DCount ("[Num client]";"Client"; "Ville = 'PARIS' " )Noter les ' autour de Paris

3

DSum() SomDom( ) Somme un champ DSum ("[Prix Ht]"; "Produit";"[Prix Ht] >500" )

2500

DAvg() MoyDom( ) Calcule la moyenned'un champ

DAvg ("[Prix Ht]"; "R04 abc")Requête au lieu de table

Pas de filtre ici

450

DMax MaxDom( ) Calcule la valeurmaximale

DMax ("[Prix Ht]"; "Produit";"[Prix Ht] >500")

2000

DMin MinDom( ) Calcule la valeurminimale

DMin ("[Prix Ht]"; "Produit";"[Prix Ht] >500")

30

DLookup( ) RechDom( ) Rechercher lepremierenregistrementrépondant à uncritère

DLookup ("Nom" &" " &"Prénom"; "Client";"[NumClient] = " &Formulaires![Commande]![RefClient]))Noter l'expression avec "[Nom]" &" " &…Noter le filtre basé sur la valeur actuelledu contrôle du formulaire ouvert

PUISSEAlain

5) Fonctions de conversionSyntaxe anglaise Syntaxe française Définition Exemple RésultatsNz(expression;valeur deremplacement)(Nz pour Null to Zéro)

Nz( ) Convertir une valeurNull en une autre valeur

(0 par défaut pour unevariable numérique)

Nz(Quantité)*2

Quantité *2

0 si quantité= Null.

Null si quantité =Null

Val() CNum() Renvoie un nombre àpartir d'une chaine decaractères

Val("88 rue descorsaires")

88

Str() NumChaine() Transforme un nombreen chaine de caractères

Str(12) "12"

Page 34: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 34

6) Fonctions DiversesSyntaxe anglaise Syntaxe française Définition Exemple RésultatsIif(condition;valeurSiVrai;valeurSifaux)

VraiFaux( )IIF() en V 2010Remarque : nousavons déjà utilisécette fonctionpage 31 en haut

Retourner une valeur enfonction de la conditionVraie ou FausseMême logique que le SI Excel

Iif(1=1;2*3;4)

6

IsNull(expression) EstNull( ) Tester si la valeur est Null(vide)

IsNull(champ1)

Vrai ou Faux

MsgBox(message;boutons; titre)

BoîteMsg() Afficher une boite demessage

MsgBox("Ajout effectué")

InputBox(message;titre; valeur pardéfaut)

BEntrée () Afficher une boite desaisie de donnée par leclavier

InputBox( Entrervotre âge")

ATTENTION : Ces fonctions sont utilisables:- dans les Requêtes, les Formulaires et les Macros (voir plus loin pour les Formulaires et Macros) : leséparateur entre les argument est le point virgule : MsgBox(message ; boutons ; titre)- dans la programmation VBA : le séparateur est la virgule : MsgBox(message , boutons , titre)

Exemple d'utilisation de fonction VBA dans une requête1) Afficher la liste des commandes dont la date de commande est supérieure à

la date d'entrée minimale des clients Toulousains .

Page 35: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 35

7) Fonctions PersonnellesVous pouvez aussi écrire en langage VBA dans l'éditeur (ALT+F11) vos propres fonctions qui pourrontêtre appelées depuis les calculs de Requêtes, Formulaires et Etats. Exemple :'Exemple de fonction appelée dans une requête ou un formulaireFunction DureeEnHeures(ByVal DureeMin As Integer) As String'Role : Retourner une chaine de caractères correspondant à une durée en Heures et Minutes' à partir d'une Durée en minutes exemple : 65 Mn donne "1H05Mn"'ENTREE : DureeMin : Durée en minutes (ex : 65)Dim Heure As Integer, Minute As Integer

Heure = DureeMin / 60Minute = DureeMin Mod 60 'Mod pour le reste de la divisionDureeEnHeures = Heure & "H" & Format(Minute, "00") & "Mn" 'Conversion implicite en String

End Function

Exemple d'utilisation dans une requête depuis le générateur d'expression :

- Fin de la partie Fonctions -

- Utiliser le fichier Fac02a2007.accdb pour la suite

F. Exercices à faireQuestion : "Créer la requête R12 Calcul TTC unitaire permettant d'afficher précisément le résultat ci-dessous".

"A vous d'essayer…en faisant attention au choix des tables !"

Question : "Créer la requête R12_1 Des informations sur les clients permettant d'afficher le type derésultat ci-dessous en manipulant & et les fonctions VBA".

"A vous d'essayer…en faisant attention au choix des tables !"

NE PAS FAIRE

CETTE PARTIE

NE PAS FAIRE

CETTE PARTIE

Page 36: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 36

G. Requête avec calcul sur "Regroupement" d'enregistrements1) Requête "R13 Calcul sur regroupement"Question : " Nombre total de produit commandés de marque Canon seulement (CAN dans le code duproduit) regroupées par produit "

a) Sélectionner les commandes de tous les produits Canon (dans les Ref Produit)

Exécuter

b) Regrouper les enregistrements ayant même valeur (CAN001 par exemple) pour faire destraitements sur le groupe.Ajouter la ligne Opération par le bouton Totaux .

Tester.

Dans l'en-tête de la dernière colonne, transformer "Quantité" en "Total des ventes : Quantité"pour éviter l'affichage de SommeDeQuantité remplacé par Total des ventes (nom de colonne calculée).Tester pour la colonne Total des ventes les autres Opérations (autres que Somme) disponibles sur unRegroupement : Moyenne, Min, Max, Compte, …

H. Exercices à faire

Question : "Créer la requête R14 : Moyenne desquantités de produits des commandes par clientpermettant d'afficher précisément le résultat ci-contretrié par moyenne".

"A vous d'essayer…en faisant attention au

choix des tables !"Voir bas de page 31 le conseil pour une requête …

Utiliser le fichier Fac03a2007.accdb pour la suite

Page 37: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 37

2. Résumé des Requêtes Requête Sélection mono-table

Gestion du Tri, des Critères de sélection, des Opérateurs logiques Et / Ou entre lescritères, des Opérateurs de sélection : =,<,>,>=,<=, < > (différent), Entreet Comme (Comme pour utiliser les caractères joker : ? , * , # )

Requête Sélection Multi-tables avec Relation entre les tablesLa relation ci-dessous est héritée de la fenêtre Relation

Requête Sélection Multi-tables avec Relation entre les tables et Calculs

Définitions de Colonnes de Calcul, Nom : CalculInsertion de Champs de Tables

=

= ==

Page 38: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 38

Ch4. Les Formulaires de baseIls permettent la présentation des Données issues des Tables ou Requêtes :

Remarque : les requêtes ne stockent pas de données, elles les recherchent dans les Tables.

Table ou Requête = affichage brut des donnéesen mode Feuille de données (tableau).

Formulaire = affichage permettant une

Mise en Forme des données.

Intérêts du Formulaire :- être l'interface (l'intermédiaire) entre les Données et l'Utilisateur pour lire et écrire des données- présenter un affichage optimisé et sophistiqué (Interface graphique Windows)- faciliter la saisie (aide à la saisie par choix dans liste déroulante par exemple)

1. Formulaire Unitaire basé sur une tableA. Créer un Formulaire Colonne simpleDepuis l'onglet Créer, bouton Plus de Formulaire (Assistant formulaire en V 2010):

Assistants : Assistant formulaire Table : Client OKChamps a insérer (dans l'ordre) : Tous sauf Date Entrée SuivantPrésentation : Colonne simple Suivant ; Style : Access 2003 SuivantTitre : Client (c’est le nom d’enregistrement de ce formulaire) Terminer

Passer en Mode Création par Fermer le formulaire. Fermer la table Client si ouverteOuvrir le formulaire en Mode Formulaire (double clic sur nom du formulaire Client).Le mode Formulaire permet de voir les Données sans possibilité de mise en forme.

Passer en Mode Page par . Ce mode permet de voir les données ET permet defaire de la mise en forme et mise en page. Tester quelques modifications de forme.

B. Utiliser un formulairePasser en mode Formulaire pour être Utilisateur de l'application et non Développeur.

1) Ajouter des enregistrementsAtteindre un nouvel enregistrement vide : (en bas d'écran) par ce boutonSaisir : Vendaire Isabelle 2 Av Casanova 31000 TOULOUSE .Vérifier que Vendaire ajouté depuis le Formulaire est présent dans la Table Client.

2) Consulter des enregistrements en mode formulaireUtiliser les 4 boutons de déplacement en bas de formulaire

3) Modifier des enregistrementsDirectement au clavier sur les données (les modifications se répercutent directement sur les données des Tables)

4) Rechercher des enregistrementsRechercher TERIEUR : se positionner sur le champ Nom et utiliser

5) Supprimer des enregistrementsSélectionner à la souris l'ensemble "Vendaire" par la barre de sélectionà gauche des données puis touche Suppr

Utilisateur

(voir Résultat Final page suivante)

Page 39: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 39

C. Modifier un formulaireObjectif à obtenir à la fin de cette partie Modification :

Passer en mode Création sur le formulaire Client : il y a 3 sections (En tête, Détail, Pied).

Les éléments d'un Formulaire sont appelés des Contrôles

Deux types de contrôles sont présents sur ce formulaire:-Zone de texte = texte modifiable par l'utilisateur (Toulouse)

correspondant aux données des champs de la Table Client-Etiquette = texte figé pour l'utilisateur (Ville)

précisant seulement que Toulouse est une donnée du domaine Ville1) Gérer les contrôles existants.Sélection : (à la souris : clic ou+clic pour ajouter à une sélection)

(à la souris : par glissé encadrant partiellement les contrôles ciblés).Dégrouper : les contrôles affichés ici sont groupés dans une Disposition : cliquer la croixpour sélectionner les contrôles puis clic droit sur un des contrôles Disposition > Supprimer pourpouvoir dégrouper et gérer ces contrôles individuellement..Déplacement : (avec souris : "contour" pour le couple de contrôles, "carré haut gauche" pour un seul)

Application :.sélectionner le contrôle Num Client.déplacer le couple Etiquette (sur fond gris) et Zone de texte (sur fond blanc).déplacer seulement le contrôle zone de texte sans son étiquette; étiquette sans sa zone de texte..Mise en forme:

- police - taille de la police - attribut (gras, italique)- alignement (Gauche, Centre, Droit) - style et couleursApplication : modifier la taille et le style de la police pour tous les contrôles sauf le Num Client

.Sélectionner les contrôles par un glissé à la souris, .choisir police Arial, taille 14 , clic droit sur uncontrôle, -Taille -(adaptée) Au contenu.sélectionner Zone de texte-Nom par clic ,.sélectionner Zone de texte-Prénom par+clic

.utiliser onglet Accueil pour: Fond=jaune, .sélectionner la ligne Détail du formulaire parclic et attribuer Fond=vert clair.Remarque : Pour afficher les propriétés d'un contrôle : double-clic sur le contrôle (si non sélectionné).Remarque : Voir aussi le clic-droit sur un contrôle.

Exécuter, Enregistrer, Retour en Création

Modifications

Demanderexplicationsà l'enseignant

1

2

4

3

Page 40: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 40

2) Ajouter des contrôles par la barre de contrôles

Onglet Création : nousallons utiliser quelques types

de contrôle de formulaire

Voir numéros 1,2,3,4 ci-dessous et leur correspondance sur la copie d'écran de la page précédente.1. contrôle Etiquette

Correspond à du Texte non modifiable par l'utilisateur de l'application et basé sur le texte d'une légende.Application : .sélectionner l’outil Etiquette (Aa) qui permet d’ajouter du texte figé .créer une

Etiquette à droite du contrôle Num Client par un glissé puis saisir son texte : Automatique (indiquantainsi que la génération du Num client est Automatique)

2. contrôle RectangleApplication : .sélectionner l’outil de dessin Rectangle dans la barre d’outil, .dessiner un

rectangle autour du Nom et Prénom par un glissé .donner une couleur au rectangle puis mettre lerectangle en arrière plan par onglet Réorganiser, bouton Mettre en arrière plan de zone Position

3. contrôle Zone de texteCorrespond à du Texte généralement modifiable par l'utilisateur de l'application et basé le plus souvent sur unchamp de table.

Application : sélectionner l’outil zone de texte et ajouter un contrôle ‘Date Entrée’(utiliser dans les propriétés Source du contrôle pour choisir 'Date Entrée’ dans la liste des champs de latable Client). Un contrôle de type Etiquette a été associé en plus à la Zone de texte.Modifier la propriété Légende de l’Etiquette de texte en ‘Date de l'Entrée :’

Autre manière d'ajouter facilement un couple Etiquette-Zone de texte sur la base d'un champ deTable: utiliser le bouton 'Ajouter champs existants' puis faire glisser un champ sur le formulaire.

4. contrôle LogoApplication : Ajouter le logo Clientele.gif (fichier fourni). Le logo est ajouté automatiquement

dans la zone En tête du formulaire. Par la propriété Mode d'Affichage du Logo, affecter successivementDécoupage, Echelle, Zoom à l'image pour comprendre la présentation de l'image.

Le contrôle Logo est en réalité un contrôle Image, positionné automatiquement dans l'en tête duformulaire, avec une petite taille par défaut. Tester le contrôle Image avec le même fichier .gif puiseffacer cette image.

Bilan sur l'affichage des Images :-En Découpage : L'image ne rentre pas dans la surface qui lui est allouée, elle est découpée (il manqueici le haut et le bas). Sa taille de base est gardée.-En Echelle : L'image est déformée horizontalement et verticalement (mis à l'échelle : ici élargiehorizontalement) pour occuper toute la surface qui lui est allouée. La totalité de l'image est vue.-En Zoom : L'image n'est pas découpée, n'est pas déformée, elle n'occupe pas toute la zone qui lui estallouée (à droite et gauche) et elle est zoomée (ici zoom arrière). La totalité de l'image est vue.

Page 41: Polycop td access 2007  facturation

Ensat

3) Catalogue des types de contrôleVoici quelques exemples de type de contrôle avec

Etiquette : pour du texte figé non modifiable

Zone de texte : pour afficher(champs de tables ou colonnes de requêtes

Groupe d'options :

Bouton bascule

Bouton d'option

Case à cocher

Liste déroulante :

Zone de liste :liste de valeurs toujours visible mais prend de la place

Bouton de commande : pour déclencher des

Image fixe de décoration (non lié à und'enregistrement d’une Table)

Logo : une petite image dans l'en tête du formulaire

Cadre d’objet indépendant deidentique (figé) pour tous les enregistrements du formulaire

Cadre d’objet DEPENDANTchangeant pour chaque enregistrement (exemple : photo dechaque client prise dans Table Client)

Saut de page : utilisable pour les impressions

Onglet pour superposer des pages d'informations

Sous-formulaire : formulaire représentant une listeassociée à 1 enregistrement (les N

Trait à dessiner

Rectangle à dessiner

Graphique

Lien hypertexte : lien vers page web par exemple

Lien vers une pièce jointe : un fichier word par exemple

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques

Catalogue des types de contrôleVoici quelques exemples de type de contrôle avec leur affichage

: pour du texte figé non modifiable

afficher-modifier des donnéesde requêtes)

visible mais prend de la place

pour déclencher des programmes

fixe de décoration (non lié à un numéro

: une petite image dans l'en tête du formulaire

des données : son affichage estenregistrements du formulaire

Cadre d’objet DEPENDANT d'un champ de table doncpour chaque enregistrement (exemple : photo de

client prise dans Table Client)

: utilisable pour les impressions ----< Saut de Page >

pour superposer des pages d'informations

: formulaire représentant une listeassociée à 1 enregistrement (les N produits d'une commande)

: lien vers page web par exemplewww.fnac.com

un fichier word par exemple

Page 41

leur affichage

Saut de Page >----

www.fnac.com

Page 42: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 42

4) Remarque sur la largeur les Formulaires :Dans un formulaire, il n'y a pas de bouton pour régler le zoom (contrairement à Word et Excel).Il faut donc faire en sorte que la largeur de vos formulaires affichés ne dépasse pas de l'écran del'utilisateur en tenant compte de l'inconnue de la résolution écran de l'utilisateur.Voici les limites :

Résolution écran de l'utilisateur Taille maxi du formulaire en mode création800 x 600 19 cm1024 x 768 25 cm1280 x 1024 32 cm

Il faut donc faire un choix de limite : 25 cm maxi (1024 x 768) semble aujourd'hui accessible pour beaucoup.

Question : Créer un formulaire pour présenter les produits de notre catalogue.

" A vous d'essayer "avec :

Dans l'Entête du formulaire :- le texte figé "Catalogue Produit"- une image basée sur le fichier " LogoProduit.gif" fourni

Dans la zone Détail :- les 4 champs de l'enregistrement avec gestion de la présentation 'superposée'- 2 rectangles- Num Produit et Désignation : cadrage à gauche- Prix et Taux de tva : cadrage à droite

Dans le Pied du formulaire :- le texte figé "Les meilleurs produits du marché"

Afficher le Produit : Initiation à Access pour les nulsNous calculerons et afficherons le Prix Ttc plus tard.

REMARQUE : Les données de l'application sont présentées à l'utilisateur uniquement(pour le moment) par les FORMULAIRES.Les TABLES (qui stockent les données) et les REQUETES (qui traitent les données) ne sontnormalement JAMAIS présentées à l'utilisateur, elles servent à alimenter les FORMULAIRES quiont donc des données (de base ou traitées) et qui ajoutent la Forme de la présentation.

ZoneEn-tête

ZoneDétail

ZonePied

Page 43: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 43

2. Formulaire Tabulaire basé sur une requêteObjectif : Créer ce formulaire et afficher les produits commandés non payés triés par date de commande.Le formulaire affichera les données provenant de plusieurs tables, sous forme de tableau (Tabulaire )avec le calcul Total TTC par Produit et avec un Total général en bas de formulaire.

Procédure :

A. Créer la requête source du futur FormulaireCréer la requête basée sur les tables avec les champs suivants et 1 calcul

avec pour le champ 'Payé': critère : non; affichage désactivé (non affiché), tri sur Date Commande

Essayer de faire la requête ci-dessus seul (sinon consulter ci-dessous) :

Utiliser les tables CommandeEnTete, CommandeLigneProduit et Produit (Client pas nécessaire).

ATTENTION : dans une REQUETE1) Avant d'utiliser le générateur pour les calculs, il faut enregistrer la requête.2) Dans une colonne calculée de requête, on peut utiliser:- les colonnes de la requête courante (si requête enregistrée)- les champs des seules tables choisies en haut de la requête courante

Ici, le générateur vous propose d'utiliser les 4 tables de l'application MAIS en réalité vous ne pouvezutiliser que les 3 tables à la 'source' de votre requête. Table Client interdite d'utilisation !.De même, vous ne pouvez utilisez aucunes Requête car non présentes à la 'source' de votre requêteExécuter Enregistrer : R15 Produits commandés avec date puis Fermer.

AvecGénérateurd'expression

obligatoirement

Ce problèmed'affichage n'est pastraité dans la requêtemais sera géré dans

le formulaire.

Eventuellement, enmode Création, voirbouton Propriétés

puis Format

Descalculs

Page 44: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 44

B. Créer un formulaire Tabulaire basé sur la requêteCréer un nouveau formulaire par Assistants formulaire basé surla requête R15 Produits commandés avec date avec toutes les colonnes de la requête sauf Taux Tva,

-de type : Tabulaire -présentation : Access 2007 -titre : Produits commandés triés par dateSeul le mode Tabulaire permet de faire des calculs de

synthèse dans le pied du formulaire : ici somme.(Tabulaire signifie présentation des données en TABLEAU)-bouton Terminer.

Passer en Création pour ajouter des Contrôles

C. Ajouter des contrôlesEn mode Création, ajuster la taille des contrôles si besoin (Ref Produit), pour le Prix TTC, donner par lapropriété format la valeur : Monétaire pour n'afficher que 2 décimales et€.

1) contrôle Zone de texte (ab) (en réalité, 2 contrôles Étiquette + zone de texte)

Nous souhaitons calculer la somme des montants TTC de tous les produits commandés non payés.

Agrandir le pied de formulaire à la souris puis Ajouter un contrôle Zone de texte dans le pied duformulaire à droite sous le prix TTC avec les propriétés suivantes :

.source contrôle : utiliser le générateur d’expression(ne pas saisir au clavier) =Somme([Total TTC])

obtenir Somme dans les Fonctions intégréesobtenir Total TTC par clic sur <Liste de champs> puis Total TTC

Attention: Dans un contrôle avec calcul, on doit utiliser:- soit les contrôles du formulaire courant

<Formulaire> =contrôles utilisables- soit les champs de la requête à la source du formulaire si

clic sur <Liste de champs> = champs utilisablesOn ne peut utiliser d'autres données que celles du formulaire

ou celles à la source du formulaire (ici la requête ). On ne doit PAS utiliser les TABLES ou REQUETES par

.nom : TotalGénéral

.format : Monétaire. Fermer fenêtre des propriétésChanger les propriétés de l’Étiquette du contrôle

.légende : Total des commandes impayées

2) contrôle Trait Tirer un trait comme sur l'exemple pour montrer la synthèse par la somme.Passer en mode Formulaire, tester, Enregistrer et fermer ce formulaire.

Conclusion : des Calculs peuvent être faits :1. dans des colonnes de Requête (cas le plus courant)

2. dans des contrôles Zone de texte de Formulaire (quand on ne peut le faire dans une requête)

Voir page suivante des Exercices :

Attention à ne pas laisser un espace endébut de Titre après avoir effacé R15 dutitre proposé

Page 45: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 45

D. Exercices à fairesi vous avez du temps :

Travail sur les requêtes :

1- Question:Afficher les Clients :Du Département 78 mais pas de Versailles

ouEntrés avant le 16/4/2009 et habitant exclusivement une « avenue» ou une « place»Trier par nom prénom.

Enregistrer : R14 A faire 1 fin de td Trouver des clients et ou tri

2- Question:Afficher les Produits et les clients l'ayant acheté (avec la date de commande) :Trier par numéro de produit.

Enregistrer : R14 A faire 2 fin de td Trouver des produits et leurs clients

3. Résumé des FormulairesVoir résumé au Chapitre 9

Fin du TD3

Page 46: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 46

Ch5. Les Tables avec listes déroulantesde choix pour Clé Etrangère

Utiliser le fichier Fac04a2007.accdb pour la suite

1. Tables actuelles basiquesAvec les tables actuelles, pour saisir une nouvelle CommandeEnTete, il faut saisir au clavier unevaleur dans le champ Ref Client qui soit une valeur existante du champ Num Client de la table Clientcar les tables sont liées.

Tester ce principe en saisissant une nouvellecommande (11) avec pour le champ Clé étrangèreRef Client la valeur 3 (car dans la Clé PrimaireNum Client, 3 existe) et valider les propositionspour les dates et Payé.Num Commande Ref Client Date Commande Date Echéance Payé

Après ce test, supprimer la commande 11 encliquant dans la colonne grisée à gauche du 11 (pas sur le +) puis touche Suppression (Suppr).

Nous sommes donc contraints à un choix d'une valeur de Num Client pour saisir Ref Client.Nous souhaitons que ce choix soit assisté par une liste déroulante.

2. Champ Clé étrangère avec liste déroulantede choixObjectif : pour la clé étrangère Ref Client de la table CommandeEnTete, gérer une liste déroulante avecTRI sur Nom + Prénom pour choisir le client qui commande.

Num Commande Ref Client Date Commande

Dans une première version de base, une fois le choix fait, continuer à afficher la valeur 3 dans Ref ClientNum Commande Ref Client Date Commande

Clé primaireSANS doublon

"Père"

Clé étrangèreAVEC doublons

"Fils"

Pour choisir un client,hors mis son Num client,nous afficherons son Nomet en plus son Prénom caril y a des homonymes(GALL).

=

Page 47: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 47

A. Modifier propriétés Liste de choix des champs clés étrangères1) Version de base pour la liste déroulante Ref Client

Mode CréationTable CommandeEntête, Champ Ref Client.Onglet Liste de choix

Parmi les 3 colonnes (Num Client,Nom et Prénom), la colonne liée estle rang de celle qui est stockée dansle champ Ref Client(ici la 1ière , la valeur de Num Clienty est stockée).C'est aussi cette 1 ière colonne qui estaffiché dans la liste (2 cm). C'estmon choix temporaire ici, on vaévoluer plus loin.

Contenu détermine ce qui va dérouler dans la liste déroulante (ici Num Client, Nom, Prénom de Client)Pour la propriété Contenu, utiliser le générateur (…en fin de ligne) pour créer la Requête (ajoutertable Client, 3 champs dans l'ordre : Num Client, Nom, Prénom, tri sur Nom puis Prénom), fermer larequête, OUI pour enregistrer le code SQL ci-dessous (ne pas saisir le texte ci-dessous)SELECT Client.[Num Client], Client.Nom, Client.PrénomFROM ClientORDER BY Client.Nom, Client.Prénom;

La valeur de la propriété Contenu est :-soit le texte SQL définissant une requête dans laquelle on fait au moins un TRI-soit le Nom d' une requête dans laquelle on fait au moins un TRI-JAMAIS un Nom de table car dans ce cas nous n'aurions pas le TRI souhaité

Ensuite, passer en mode Affichage de la table,enregistrer les modifications de la table (OUI),tester la saisie d'un client.

Une fois le client saisi, l'affichage ci-contre est peu significatif (qui estle client 3 ? Quel est son Nom ?).

Evolution, nous souhaitons :- continuer à stocker dans Ref Client un Numéro de client- afficher devant Ref Client son Nom concaténé (juxtaposé) à son Prénom pour différencier leshomonymes (GALL Alphonse et GALL Bill)

(Voir page suivante la nouvelle version)

TRIOBLIGATOIRE

8 cm (Pour 2 cm + 3 cm+ 3 cm)

Page 48: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 48

2) Version évoluée pour la liste déroulante Ref ClientRetrouver la fenêtre des propriétés du champ Ref Client.Remplacer 2cm pour la première largeur de colonne (celle de Num Client) par 0 cm.

Tester en mode Affichage.Nous ne voyons plus le Num Client (3) et suite à lasaisie, c'est la première colonne avec une largeur autreque 0 qui est affichée : Nom (DURAND).

Problème : si on choisi la ligne GALL Alphonse, nousne verrons après la saisie que le Nom GALL affichésans pouvoir le différencier de GALL Bill !

Evolution : Nous souhaitons toujours avoir la première colonne (caché à 0 Cm) de Num Client maisavoir dans une deuxième et dernière colonne le Nom en majuscule concaténé (juxtaposé par &) à unespace (" ") puis concaténé au Prénom pour que ces 2 informations apparaissent ainsi après saisi.

Modifier la propriété Contenucomme ci-contre qui définit cequi déroulera en utilisant lebouton … en fin de ligne.Nous construisons comme nous l'avons déjà fait une colonne calculée avec :- à gauche de : un texte totalement libre qui est l'identification de cettenouvelle colonne Nom et Prénom (ou Client qui commande si on veut)- à droite de : un calcul utilisant la fonction Majuscule() (à trouver dans le

d'expression, rubrique Fonction, puis Fonctions intégrées, puiscolonne centrale Texte puis colonne de droite Majuscule).

Utiliser le bouton Affichage pour voir le futur contenu de la listedéroulante. Fermer cette fenêtre, OUI pour enregistrer les modificationsSQL.Nous n'avons donc plus que 2colonnes, donc modifiercomme ci-contre.

Tester :

Majuscule devient enAnglais UCase pourUp Case.

Page 49: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 49

3) Version permettant les Ajouts / Modifications / Suppressions assistés de la liste déroulantePouvoir choisir un client, c'est bien, mais comment, depuis l'environnement courant (ici la table), ajouterou modifier des clients de la liste déroulante ?

Access propose une nouveauté basée sur 2 nouvelles propriétés de la liste de choix :Autoriser la modification de la liste : OUINom du formulaire pour saisir des clients : ClientFermer la table et la ré-ouvrir pour activer les 2 modifications ci-dessus.

Après saisie de ces 2 propriétés, lorsque vous déroulez la liste, vous obtenez un petit bouton enbas ou haut de liste que vous cliquez et qui ouvre le formulaire Client.On peut ajouter, (atteindre un nouvel enregistrement par)ou modifier (se déplacer par les boutons ci-dessous puis modifier)

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

ou supprimer des clients puis fermer le formulaire Client.

On retourne AUTOMATIQUEMENT sur notre table CommandeEnTete, réutiliser la liste déroulantequi est AUTOMATIQUEMENT mis à jour des ajouts, modifications et suppressions faits dans leformulaire Client.

Tous les mécanismes de la liste déroulante testés ici au niveau de la table CommandeEnTete seronthérités dans tous les formulaires qui seront construits sur cette table.

B. Exercice à faire…

Faire de même pour Table CommandeLigneProduit, Champ Ref Produit, Onglet Liste dechoix pour saisir un produit commandé parmi les produits de la table Produit.

N'oubliez pas que notre objectif primaire est toujours de stocker dans Ref Produit la valeur du champNum Produit (LOG001 pour le Clavier Logitech KZ Noir) de la table Produit même si cela ne se voitpas sur la copie d'écran ci-dessus !!!

Gérer la propriété : Largeur listeGérer aussi les 2 propriétés :Autoriser la modification de la liste : OUINom du formulaire pour saisir des produits : Produit

Ici, une fois le choix fait par laliste déroulante, on affichera laDésignation (1 seul champ icicar toutes les désignations sontdifférentes contrairement auxnoms des clients de l'exempleprécédent) dans Ref Produit.

Page 50: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 50

Remarque sur les listes déroulantes de clés étrangères:

Ce que nous avons fait peut être perçu comme ambigu : Pour Ref Produit par exemple :

Ce qui est stocké LOG001 n'est pas affiché etCe qui est affiché Clavier Logitech KZ Noir n'est pas stocké !

1) Correction pour la clé étrangèrePour le champ Ref Produit de la table CommandeLigneProduit :

La 1° colonne Num Produit :- n'est pas visible dans la liste déroulante (0cm mais existe), est toujours liée (rangée dans Ref Produit)- n'est pas affichée après saisie donc c'est la colonne suivante (2°=Désignation) qui est affichée (mais passtockée dans Ref Produit)

Rappel : Ref Produit est Texte, Longueur 6 caractères donc "Imprimante laser Canon type 1" n'est pas lecontenu de ce champ !!!

Ne pas gérer une liste déroulante pour la clé étrangère Ref Commande de la tableCommandeLigneProduit, nous utiliserons une autre technique pour assister la saisie de cesvaleurs.

Page 51: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 51

Ch6. Bilan de l'application1. Des Tables Pour information, voici le MCD (Modèle Conceptuel de Données) de cette application

Des Tables avec Relations Clé Primaire - Clé Etrangère

Des Clés Primaires (nommées Num Table si mono champ)Mono-Champ Mono-Champ Mono-Champ MULTI-Champs (composée)

Type : NumAuto Texte 6 caractères NumAuto

Des Clés Etrangères (nommées Ref Table visée)à Liste déroulante à Liste déroulante SANS Liste déroulante

Chronologie pour les tablesDans ce TD, pour mieux comprendre la logique des tables nous n'avons pas respecté la logique normale des étapes qui doit être :- Définir les champs de chaque table avec sa clé primaire simple ou composée.- Définir pour chaque clé étrangère une liste déroulante de choix si besoin.- Définir les Relations avec Intégrité référentielle entre les Tables sur des tables vides de données.- Saisir les données dans les tables :

- soit directement dans les Tables (peu recommandé).- soit par l'intermédiaire de Formulaires (recommandé car plus performant).

2. Des Requêtes Des Requêtes de Sélection Mono ou multi table Avec ou sans calcul

3. Des Formulaires Avec pour Source une Table ou une Requête Affichage Colonne simple (uniquement 1 enregistrement visible) ou Tabulaire (tableau de N enregistrements)

Avec ou sans CalculUtiliser le fichier Fac05a2007.accdb pour la suite

Aller voir le Chapitre "Introduction aux Bases de Données et à ACCESS"pour comprendre ce qui a été fait.

Page 52: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 52

Ch7. Facturation: extensions à faire seul1. Cahier des charges pour les TablesOn vous demande, sur la base de ce que vous avez appris dans les pages précédentes de créer :Tables, Champs, Clés primaires, Clés Etrangères, Propriétés de champ(Taille, Format, Liste déroulante pour les clés étrangères, Index, Null interdit)

et Relations entre les champs des tables.De nouvelles données doivent être gérées dans cette application de Facturation.Penser à utiliser les règles de nommage des tables et champs vues précédemment.

A. Table simple1) Nous voulons gérer les Catégories de produits avec comme base une liste devaleurs présentes dans un classeur Excel.Précisions :Un Produit fait référence à 1 seule Catégorie.Une Catégorie fait référence à plusieurs Produits.Gérer pour chaque catégorie le Numéro (clé primaire) et le nom Nom Catégorie.On veut éviter qu'un utilisateur ne puisse saisir 2 fois (doublon) le même Nom de Catégorie.Les données seront saisies au clavier. Créer la table Catégorie, modifier la table Produit car on veutune liste déroulante pour choisir LA Catégorie de chaque Produit. Gérer la Relation entre ces 2 tables.Créer aussi un formulaire sur la table Catégorie en assistant Formulaire.

2) Nous voulons gérer les 3 Fournisseurs des produits.Précisions :On souhaite gérer pour chaque Fournisseur, hors mis la clé primaire,son Nom et sa Ville.On souhaite éviter de confondre le nom et la ville du client avec le nom et la ville du fournisseur doncnommer les champs : Nom Fournisseur, Ville Fournisseur. On veut éviter qu'un utilisateur ne puissesaisir 2 fois (doublon) le même Nom de Fournisseur. On veut le nom de la ville toujours en majuscule.Pour simplifier, on ne gère pas l'adresse, le code postal et d'autres informations qui pourraient être utiles.Gérer la table Fournisseur et créer aussi un formulaire sur la table Fournisseur.

B. Table complexeUn Produit fait référence à (peut être acheté chez) plusieurs Fournisseurs dans certains cas.Un Fournisseur fait référence à (peut nous vendre) plusieurs Produits.

1) Gérer des informations suivantes pour chaque couple Produit-Fournisseur appelé ProdFour.- Prix d'achat hors taxe pour un produit proposé par un fournisseur.- Délai de livraison en jours pour un produit proposé par un fournisseurVoici à droite un exemple de prix et de délai de livraisond'un même produit proposé par 2 fournisseurs.Précisions : On souhaite, pour des raisons de cohérence, ne pas avoir 2 fois un même produit Produit1proposé par un même fournisseur Fournisseur1. Gérer la clé primaire en conséquence. On souhaiteavoir les listes déroulantes pour choisir Produits et Fournisseurs. En saisissant 1.5 on veut afficher1,50 Jours donc saisir 0.00" Jours" pour la propriété Format du champ Délai Livraison.

« A vous d'essayer... »Fin du TD4

Voir exemple déjàtraité précédemmentUne Commande faitréférence à 1 Client

Voir exemple déjà traité : Une Commande fait référence à plusieurs Produits.Un Produit fait référence à plusieurs Commandes.

Page 53: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 53

2. Cahier des charges pour les RequêtesUtiliser le fichier Fac06a2007.accdb pour la suite

Vous pouvez consulter la procédure de la correction du travail sur les Tables dans ce document.Voir en fin de la table des matières le numéro de page.

A. Requête simpleConsulter les nouvelles tables et leurs données.Voici la table Produit : 14 enregistrements.

Remarque : le produit SON002 n'as pas de valeur pour Ref Catégorie !!!

1) Requête "R16 Produits sélectionnés"Question : Liste de produits composée de :a) produits avec "imprimante" n'importe où dans la désignation et dont le prix est inférieur à 1000 €

etb) produits de la catégorie Livre traitantd' "access".

B. Requête multitable1) Requête "R17 Produit et sa Catégorie"Question : Liste des produits classée par Num Produit avec affichage de tous les champs de Produit(y compris Ref Catégorie) et affichage du Nom de la catégorie de la table Catégorie.

Il n'y a QUE 13 enregistrements alors qu'il y en avait 14 en haut de cette page !!!

SON002 a disparu : pourquoi ?

Demander la réponse à l'enseignant si besoin.

Les 2 dernières colonnesaffichent les mêmesvaleurs mais n'ont pas lemême rôle.Ref Catégorie permet dechoisir pour un Produitsa catégorie.Nom Catégorie affichela valeur de la tableCatégorie dépendante(grâce à la Relation) dela valeur du champRef Catégorie.Si l'on souhaite éviter ledoublon, c'est NomCatégorie que l'onpourrait ne pas afficher.

Page 54: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 54

2) Requête "R18 Produits moyenne prix achat"Question : Liste des produits classée par Num Produit avec moyenne des prix d'achat des différentsfournisseurs.

Etape 1 : Liste des produits classée par Num Produit avec PLUSIEURS prix d'achat car plusieursfournisseurs par produit (pour certains).

17 enregistrements avec 1 doublon et 1 triplet

Etape 2 : Liste des produits classée par Num Produit avec Regroupement des mêmes produits etcalcul de la moyenne des prix d'achat des différents fournisseurs de produits.

14 enregistrements seulement suite au Regroupement

Voici la fenêtre relation après ajouts des nouvelles tables :

Une Commande vend N Produits.Un Produit est vendu dans N Commandes.

Deux relations 1-∞traduisent un lien N-N

Une Commande est liée à au plus 1 Client donc Clé étrangère Ref ClientUn Produit est lié à au plus 1 Catégorie donc Clé étrangère Ref Catégorie

Tables "techniques"pour gérer lien N-N

Attention à biendéfinir et limiter lescolonnes critères deregroupement.Ajouter par exemplela colonneRef Produit pourvoir le problèmegénéré.

Un Produit est fourni par N Fournisseurs.Un Fournisseur fournit N Produits.

Deux relations 1-∞traduisent un lien N-N

Ici 2Ici 3

Fournisseurspar produit

Page 55: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 55

3. Cahier des charges pour les FormulairesUtiliser le fichier Fac07a2007.accdb pour la suite

Vous pouvez consulter la procédure de la correction du travail sur les requêtes dans ce document.Voir en fin de la Table des matières le numéro de page.

A. Formulaire simple1) Formulaire "Fournisseur"Créer un formulaire en mode Assistant,en colonne simple avec1 seul fournisseur présenté à l'écranà un moment donné.Utiliser les boutons en bas d'écran pour se déplacersur les fournisseurs.

Nommer Fournisseur ce formulaire

B. Formulaire Tabulaire basé sur une requête1) Formulaire "Produit et sa Catégorie"

Ce formulaire sera crée en mode Assistant,basé sur une requête existante

"R17 Produit et sa Catégorie",présenté 'par Produit',présenté en mode 'Tabulaire' (donc un tableau).Nommé "Produit et sa Catégorie"

Tester avec ce formulaire l'ajout d'un nouveau Produit :Cliquer icisur ligne * pour ajouter

ou cliquer ici sur Nouvel enregistrement vide.

Saisir le nouveau produit ci-dessous et saisir dans Ref Catégorie de Produit avec la liste déroulante sacatégorie : la valeur Clavier.

Ref Catégorie stocke en réalité la valeur 3 mais affiche le Nom de la catégorie correspondante.Nom catégorie est une information de la table Catégorie et non pas de la table Produit. Ne pas modifiercette dernière colonne affichée automatiquement grâce à la Relation.Fermer ce formulaire et vérifier dans la tableProduit (utiliser éventuellement le boutonActualiser) la présence de ce nouveau clavierLOG003 rangé dans l'ordre de la clé primaire : Num Produit

C. Formulaire "Produit" à compléterAjouter un contrôle pour saisir-choisir la Catégorie du produit.En mode Création, utiliser dans l'onglet Création le bouton'Ajouter des champs existants' puis glisser sur le formulaireRef Catégorie. On obtient automatiquement la liste déroulantedéfinie dans le champ Ref Catégorie de la table Produit.

Passer en mode Affichage, sélectionner le dernier produit par

(SON002) et saisir sa catégorie Ecran. Fermer le formulaire.

Page 56: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 56

Ch8. L'EtatUtiliser le fichier Fac08a2007.accdb pour la suite

Impression des Données : 3 possibilitésImpression : Table (possible mais brut de présentation donc pas recommandé)Impression : Formulaire (possible mais pas le plus adapté)

Impression : Etat (le plus performant)

Intérêts de l'Etat :- représentation synthétique (synthèse par somme ou moyenne de groupements possibles)- regroupement par catégorie et calculs (totaux et sous-totaux)- vue d'ensemble des données

L'Etat imprime (Aperçu avant impression aussi) les Données provenant d'une Table ou Requête

1. Créer un EtatA. Etat basé sur une table1) Catalogue des produits basé sur la table Produit version1

a) Créer l'étatDepuis l'onglet Créer, bouton Assistant état :

- basé sur la table Produit.Sélectionner : tous les champs sauf Ref Catégorie Suivant.Critère de regroupement : (rien) Suivant.Le tri sera effectué sur : Num Produit Suivant.Présentation : Tabulaire, Orientation : Portrait Suivant.Style : Access 2007 Suivant.Titre (nom d'enregistrement) : Produit 01 sur table produit Terminer

Un Aperçu avant impression est proposé. Fermer l’aperçu et donc Mode Création.

Comme dans un formulaire, il y a :- plusieurs Sections : 2 En têtes, 2 Pieds, le Détail- des Contrôles: ne pas confondre les Etiquettes et les Zones de texte.- une Boite de contrôles disponible : pour ajouter des contrôles

Passer en Mode Etat par (données visibles, PAS de mise en page possible)Passer en Mode Page (données visibles ET mise en Page POSSIBLE)Passer en Aperçu avant impression (vue page format A4 et Zoom)Passer en Mode Création (données Invisibles mais mise en Page POSSIBLE).

Page 57: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 57

b) Personnaliser l'état :- modifier dans l’en-tête de l'Etat le titre en Produit : version1- déplacer ce contrôle au centre de la largeur de la page- tirer un trait sous ce titre avec le contrôle Trait de la boite des contrôles- cliquer à gauche sur le bouton Affichage pour visualiser le résultat.

Enregistrer et Fermer

B. Etat basé sur une requête1) Catalogue des produits basé sur la requête R12 Calcul TTC unitaireCliquer la requête "R12 Calcul TTC unitaire" à gauche dans la liste des requêtes pour la choisircomme base du nouvel Etat.Onglet Créer, bouton Etat etaffichage direct du résultat.Enregistrer: Produit 02 surrequêteRapide mais non personnalisé.2) Synthèse des ventes de produitsObjectif : "Etat des ventes des produits avec :

- chiffre d'affaire (CA) total par produit- chiffre d'affaire total par catégorie de Produit- chiffre d'affaire total Général."

Calcul de larequête

Voir procédurepage suivante …

Page 58: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 58

a) Créer la requête RegroupementCréer la requête basée sur :- principalement la table CommandeLigneProduit qui contient quantités commandés et Ref produit.- accessoirement la table Produit pour afficher Prix Ht et utiliser Prix dans le calcul Chiffre Affaire- accessoirement la table Catégorie pour afficher Nom Catégorie et plus tard regrouper sur la CatégorieExplication du principe : (ici les réels contenus de Ref Produit pour mieux comprendre)

Table CommandeLigneProduit (début des produits VENDUS)

Etape 1 : Créer la requête avec Liste des produits vendus triée par Ref Produit avec PLUSIEURS fois lamême Ref Produit et Prix Ht car produits commandés (vendus) plusieurs fois (pour certains).

(début des résultats de la requête)

Etape 2 : Regrouper par Produit et calculer la Somme des multiplications Quantité X Prix Ht :Déplacer la colonne Nom Catégorie une colonne à droite pour avoir une colonne vide pour futur calcul :faire un clic sur le rectangle gris au dessus de Nom Catégorie puis faire un glissé de cette colonne …

2 colonnes à droite pour avoir ceciEnregistrer la requête : R19 Chiffre Affaire par produit (car nous allons nous servir du générateurd'expression et il faut toujours enregistrer avant pour qu'il soit à jour)

Cliquer dans la nouvelle colonne vide insérée et dans la ligne champ,clic en haut d'écran sur le bouton et saisir:

- au clavier : CA HT par produit vendu : (futur nom de cette colonne calculée)- à la souris : [CommandeLigneProduit]![Quantité] (à chercher dans + Tables)- à la souris : [Prix Ht] (à chercher dans R19 Chiffre affaire par produit)Enregistrer, Afficher, Fermer.

Visualiser le résultat.a)- Il y a regroupement et Somme de Quantité x Prix Ht mais pas de regroupement par catégorieb)- Il n’y a pas de total général des ventes tous produits confondus.

Les points (a) et (b) vont être gérés par l’Etat (voir exemple plus haut).

b) Créer l'état avec assistantCréer un Nouvel Etat en mode Assistants Etat

- basé sur la requête R19 Chiffre affaire par produit

.Sélectionner tous les champs: (de la requête) Suivant

.Critère de regroupement : (Ref produit est déjà défini mais)on supprime le regroupement sur Ref Produiton ajoute le regroupement : Nom Catégorie Suivant

.Le tri sera effectué sur : Ref Produit (ne pas faire Suivant)

Somme

= =

Page 59: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 59

Option de synthèse : OK Suivant.Présentation : Echelonné, Orientation : Portrait Suivant.Style : Access 2007 Suivant.Titre (nom d'enregistrement) : Ventes par Catégorie et par Produit Terminer

Un aperçu de l’état final est proposé. Il y a des problèmes à gérer…

Fermer l’aperçu et retour en Création.

c) Personnaliser l'état :

Comme dans un formulaire, il y a :- plusieurs Sections : 2 En têtes, 3 Pieds, le Détail- une Boite à Outils disponible- des Contrôles manipulables : ne pas confondre les Etiquettes et les Zones de texte.

Enregistrer, Aperçu avant impression (et éventuellement impression de cet Etat récapitulatif).

S'il vous reste du temps …Gérer l'Etat suivant pour travailler de manière autonome…

On veut permuter le contenu de lapropriété Légende pour ces 2Étiquettes car ici, erreur d'Access !Clic droit sur Prix Ht, DispositionSupprimer pour gérerindividuellement l'étiquette

Par la propriété Format, donner lavaleur Monétaire pour avoir 2décimales et €

Supprimer cette Etiquette trop'bavarde'Déplacer comme sur l'exemple durésultat (à voir 2 pages avant) etajouter 1 trait au dessus des 2sommes, donner le formatMonétaire à =Somme

Des calculs de synthèsesur le groupement deNom Catégorie

Page 60: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 60

3) Synthèse par Produit de la fourniture de produits par plusieurs Fournisseurs

Il existe dans leregroupement de larequête le calculCompte quicompte le nombre delignes regroupées(on comptera leslignes regroupées den'importe quellecolonne de larequête).

Cet Etat montre :- Pour chaque Catégorie, les N Produits listés- Pour chaque Produit, la moyenne des N prix d'achat des N Fournisseurs, le délai de

livraison minimum des N fournisseurs et le nombre de Fournisseurs

Voir en correction dans Fac09a2007.accdb l'Etat "Moyenne Prix par Catégorie et par Produit" etSa requête "R20 Moyenne prix achat par produit"4) Synthèse par Fournisseur de la fourniture de plusieurs Produits

Voir en correction dans Fac09a2007.accdb l'Etat "Moyenne Prix par Fournisseur" etSa requête " R21 Moyenne prix achat par Fournisseur"

2. Résumé des EtatsL'Etat est destiné à être Imprimé ou vu en Aperçu avant impression ou en mode Etat. On ne peutdonc saisir des données.L'Etat se comporte comme un Formulaire. Il a pour source une simple Table oumieux une Requête (multi tables avec calculs, tri,…). Il propose, notamment, des calculs de synthèse(Somme, Moyenne,…) sur des Regroupements de données définis dans l'Etat (en plus desregroupements de la requête).

Attention à la gestion de la largeur de l'Etat pour respecter les 21 cm de la page A4 sinon vousaurez des pages supplémentaires imprimées presque vides pour ce qui dépasse des 21 cm de large.

L'Etat a une structure complexe composée de 3 En-têtes,une zone Détail pour afficher N Lignes eten fin 3 Pieds.Il est donc conseillé de le concevoir automatiquement vial'assistant puis de le personnaliser manuellement si besoin.

Page 61: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 61

Ch9. Les Formulaires ComplexesUtiliser le fichier Fac09a2007.accdb pour la suite

1. Formulaire avec Sous-formulaireBut 1: Créer un formulaire présentant, pour 1 Client, ses N CommandesL’affichage ci-dessous permet de comprendre le lien Num Client Ref client

Correspondance Formulaire - Sous formulaire et Relation 1 – ∞.Créer un formulaire Nouveau avec Assistant formulaire. Relation Père et ses Fils

Procédure à suivre en Assistant Formulaire :Choisir (pour le Formulaire Principal FP) la table: Client OK

Champs affichés pour FP : tous les champs de Client (PAS Suivant)ET choisir à nouveau (pour le Sous Formulaire (SF)) la table: CommandeEnTeteChamps affichés pour SF : tous (en initiation, on prend tous les champs, plus tard, nous

éliminerons 1 champ : voir page suivante) les champs de CommandeEnTete SuivantAfficher : par Client en Formulaire avec SS-Formulaire SuivantDisposition : Sous-formulaire en Tabulaire SuivantStyle :Access 2007 SuivantTitre : Formulaire : Client et ses Commandes FPTitre : Sous-formulaire : Client et ses Commandes SF Terminer

Tous les liens 1-N peuvent être représentés par un Formulaire et Sous-Formulaire :

Voir exemples pages suivante.

RelationRelation

1

11

= Père

Fils

Page 62: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 62

But 2 : Créer un formulaire présentant, pour 1 En-tête de Commande, ses N Produits commandésTitre Formulaire : Commande et ses Produits FPTitre Sous-formulaire : Commande et ses Produits SF

A vous de jouer...

Saisir, via le formulaire, de nouveaux produits commandés pour des en-têtes de commandes existantes.Saisir, via le formulaire, de nouvelles Commandes complètes (en-tête puis leurs produits commandés).

Remarque: Le champ Ref Commande de la table CommandeLigneProduit n'a pas donné lieu dansle TD précédent à une liste déroulante car un produit commandé est toujours saisi dans le cadred'un Sous-formulaire de CommandeEnTete.

Ainsi, Ref Commande de CommandeLigneProduit prend automatiquement la valeur de Num Commandede CommandeEnTete : Ref Commande doit donc ne pas être affiché dans le sous-formulaire doncne pas choisir ce champ dans l'assistant au niveau du sous formulaire.

(Voir commentaire page précédente : "en initiation on prends tous les champs, plus tard …")La version finale est donc :

C'est cette barre de déplacement quipermet de se déplacer sur lesProduits commandés. Elle indiqueici que nous sommes positionnés surle 1° produit commandé par rapportaux 2 produits commandés de cetteCommande numéro 1

C'est cette barre de déplacement quipermet de se déplacer sur lesCommandes. Elle indique ici quenous sommes positionnés surla 1° Commande par rapportaux 10 Commandes de cetteApplication.

Père

1 Père et …

ses N Fils

Fils

Page 63: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 63

De même pour les autres Formulaires / Sous-formulaires à venir, NE PAS afficher le champRefxxx de la table Fille (celle du Sous-Formulaire) lors de la création avec l'assistant.

Autre Formulaire et Sous Formulaire créé directement par Assistant:

Version Simple basée sur 1 Table et 1 Table.

2. Formulaire avec Sous formulaire complexe

A. Version basée sur 2 Tables (pour FP) et 2 Tables (pour SF).

Pour le Formulaire Principal (FP), nous avons principalement la table Produit et en plus nousaccédons grâce au lien (Relation) à la table Catégorie pour afficher ici le Num Catégorie du Produit.

Pour le Sous Formulaire (SP), nous avons principalement la table ProdFour, nous n'affichons pas lechamp Ref Produit inutile, et en plus nous accédons grâce au lien (Relation) à la table Fournisseur pourafficher ici la Ville du Fournisseur.

S'il vous reste du temps du TD, voir ou faire les 3 pages suivantes qui gèrentdes Sous-formulaires complexes.

NONaffichécar inutile

NONaffichécar inutile

Page 64: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 64

B. Version basée sur 3 niveaux de Tables.

Cette organisation sur 3 niveaux hiérarchisés ne pose aucun problème à générer avec l'assistant enchoisissant les 3 tables, en éliminant de l'affichage les 2 clés étrangères Ref Client et Ref Commande.Nous avons donc 3 générations présentées : Grands pères, Pères et Petits fils.

C. Version avec 2 sous formulaires de même niveau.Objectif : Afficher chaque Produit avec sa liste de N Fournisseurs et sa liste de N Commandes.

1) Créer le formulaire Principal et 1 Sous-formulaireCréer comme d'habitude en Assistant formulaire 2 formulaires sur les tables Produit (Père) et ProdFour(Fils) sans choisir la clé étrangère Ref Produit de ProdFour, Présentation Tabulaire pour le sousformulaire et enregistrer ainsi les 2 formulaires :Produit et ses Fournisseurs et ses Commandes FP et Produit et ses Fournisseurs et ses Commandes SF.

Les grandspères

Lespères

Les petitsfils

N N

11

Page 65: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 65

Modifier le résultat : Clic droit sur Etiquetteliée à

puis Disposition>Supprimer pour dégrouperles 2 contrôles puis supprimer l'étiquette pourfaire de la place.Réduire la largeur des contrôles (RefFournisseur, Prix Achat, Délai) et la largeurdu contrôle de type sous-formulairepour faire de la place puis déplacer vers la gauche le grand contrôle SF pour le résultat ci-dessous.

2) Créer un formulaire pour être Sous-formulaireObjectif : ajouter un 2° SF à droite du 1° (voir exemplepage précédente) en Disposition Tabulaire pour afficher laliste des Commandes de chaque Produit du formulairePrincipal (FP).Laisser le formulaire actuel ouvert et depuis le menuCréer> Plus de formulaire> Assistant formulaire, faire unformulaire sur la table CommandeLigneproduit baséseulement sur les 2 champs suivants.

(rappel : on ne prend pas la clé étrangère de la table Fille)Disposition : Tabulaire,Style : Access 2007Titre : Liste des Commandes des Produits SF.Fermer ce formulaire qui va servir de SF pour notre formulaire encours de construction.

3) Ajouter un contrôle de type Sous-formulaire sur le formulaire PrincipalDepuis votre formulaire Produit et ses Fournisseurs et ses Commandes FP, en mode Création,

Vérifier que le bouton "Assistant Contrôle" est Orangé

donc Actif et choisir le contrôle Sous-formulairepuis glisser à droite à la souris un contrôle SF de même tailleque le SF de gauche.

FP

SF

Page 66: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 66

Les étapes de l'assistant SF :1) Utiliser le formulaire construit précédemment Liste des Commandes desProduits SF comme futur SF du formulaire principal.

2) Définir le lien entre la table Produit du formulaire principal etla table CommandeLigneproduit du futur SF.Ce lien est proposé automatiquementsur la base de la définition de lafenêtre Relation.

On peut garder la valeur proposée automatiquementOu définir manuellement par :ce qui est équivalent

3) Enregistrer ce SF

Résultat Final du FP et ses 2 SF :Gérer en mode Création la présentation pour obtenir ceci.

Nous avons donc 2 générations présentées : Pères (Produit en FP) et …ses Fils (Liste des Fournisseurs en SF1) et ses Filles (Liste des ventes de CommandeLigneProduit en SF2).On peut même ajouter dans le pied du Sous-formulaire2un contrôle Zone de texte pour définirpour la propriété Source contrôleavec le générateur d'expression

la Somme des lignes Quantité du Sous-formulaire

On peut utiliser d'autres fonctions que Somme, voir dans le générateur :Fonctions>Fonctions intégrée>RegroupementSQL :

Fin TD5

Page 67: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 67

3. Formulaire avec graphiqueComme dans Excel, il est possible de représenter les données de la base par des graphiques.Les graphiques peuvent être insérés dans les Formulaires ou dans les Etats.

A. Graphique simple basé sur une TableObjectif :

1) Créer le graphiqueMenu Créer / Création de formulaire.Choisir le contrôle Graphique et le poser sur le formulaire videDans l'assistant démarré : Choisir la table : ProduitChoisir les champs : Num produit ; Prix Ht SuivantChoisir le type de graphique : Histogramme 3 D SuivantCette présentation est proposée:-Num produit de type texte est proposé comme axe des abscisses :

-Un calcul de Somme de Prix Ht est proposé, cela ne convient pas :double clic sur ce bouton : Aucune pour synthèse

Cela donne ceci :

Clic sur le bouton en haut à gauche pour Aperçu du graphique :

Fermer l'aperçu puis Suivant et donner un titre au graphique : Les Produits et leur Prix et Terminer

Le résultat est un peu étonnant mais nous sommes en Mode Création donc ce n'est pas l'affichagefinal. Passer en mode Formulaire (Affichage)

Cette partie Graphique n'est à faire qui s'ilvous reste du temps en fin de TD5.

Page 68: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 68

2) Modifier le graphique :Double clic sur le Graphique pour appeler l'application Microsoft Graph.

Choisir de modifier l'axe des Abscisses :a) Choisir dans la liste déroulante l'objet à modifier :

Autre manipulation pour modifier l'axe des abscisses : double clicsur la zone à modifier : Ici double clic sur l'abscisseb) Modifier le Format de l'axe des abscisses :

Dans les propriétés, Alignement à 90 degrés OKChanger la couleur des barres de l'histogramme : rougeCliquer hors du graphique pour sortir de l'application Graph et retour dans Access en mode Création.

Passer en mode Page (Affichage final + modifications possibles), agrandir le graphique pour voirtoutes les valeurs de l'abscisse, passer en mode Formulaire (Affichage) pour obtenir :

Enregistrer le formulaire : Graphique 1 Prix des Produits et fermer ce formulaire.

Page 69: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 69

TD6Nous travaillons éventuellement en Modélisation Entité – Association en TD6

Fin TD6 de Modélisation

4. Formulaire Menu PrincipalUtiliser le fichier Fac09a2007.accdb pour la suite

But : Créer un formulaire pour proposer le Menu des opérations possibles dans l’applicationFacturation. (Aujourd'hui, les boutons de commande seront SANS effet).

Créer un Formulaire Nouveau en mode Création de Formulaire.Base du Formulaire: pas de tableSeule la section Détail s’affiche, l’agrandir à la taille voulueSélectionner Zone détail, Couleur Arrière plan = Bleu ciel

- Outil Étiquette : poser un contrôle avec :Légende : Facturation en police Arial en taille 48Ajuster le contrôle par clic droit : Taille – (Ajuster) au contenu.

Vérifier que l’outil 'Assistant contrôle' n’est pas actif (Actif = orangé, cliquer pour le désactiver si besoin)- Outil Bouton de commande (sans Assistant contrôle): poser un contrôle

Le sélectionner puis le dupliquer 6 fois par Copier-CollerPar les propriétés de chaque bouton (double Clic), donner les 6 légendes et pour le bouton du

bas, pour la propriété Image: choisir en fin de ligne par le générateur le nom de l’image SortirPasser en mode Formulaire:

Enregistrer le formulaire : A Menu principal (Je choisis le A devant Menu principal pour avoir ceformulaire au début de la liste des formulaires classée par ordre alphabétique)et l'exécuter (passer en mode Formulaire) .

Début TD7

Page 70: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 70

5. Résumé sur les Formulaires

Source du Formulaire :- Des Formulaires alimentés en données parune simple Table

- Des Formulaires alimentés en données parune Requête (multi tables, calculs, tris, …)

- Des Formulaires alimentés en données paraucune source (le Menu par exemple)

Présentation du Formulaire :- Colonne simple (dans l'assistant) pour présentation

d'1 enregistrement parécran.'Colonne simple'devient en propriété"Formulaire unique"

- Tabulaire (dans l'assistant) pour présentationd'1 enregistrementpar ligne soit Nenregistrements /écran.'Tabulaire'

devient en propriété "Formulaire continus"

- Formulaire et Sous-formulaire pour présenter un lien1 Père et ses N Fils : 1 Commande et ses N Produits.

Un formulaire principal en mode Colonne simple (Unique)incluant un formulaire en mode Tabulaire (Continus)

- Formulaire sans données :- des Boutons pour présenter le menu.- un Graphique.

- voir plus loin formulaire Tableau Croisé Dynamiqueau Chapitre 23

Page 71: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 71

Page 72: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 72

Ch10. Les MacrosUtiliser le fichier Fac10a2007.accdb pour la suite

1. Macro de démarrage Automatique : AutoexecProcédure : Onglet Créer, bouton Macro

Macro: autoexec

Action Argument ValeurDémarrage automatique de cette macro à l'ouverture de l'application

BoiteMsg (ZoneMessage en Version 2010)Message: Bienvenue …

Affiche une boite de message

OuvrirFormulaireNom formulaire: A Menu principalAffichage: FormulaireNom filtre:Condition Where:Mode données:Mode fenêtre: Standard

Afficher le premier formulaire de l'application : 'A Menu principal'Agrandir (AgrandirFenêtre en V 2010)

Agrandir la fenêtre active (donc formulaire 'A Menu principal')

Enregistrer la macro sous : AutoexecFermer la macro et double-clic sur son nom pour l’exécuter.

Remarque : Cette macro Autoexec (de par son nom particulier) s'Execute Automatiquement audémarrage de l'application et affiche le formulaire A Menu principal en plein écran.

2. Macros pour ouvrir formulaires et étatsA. Créer la macroProcédure : Onglet Créer, bouton Macro

Action Argument ValeurOuvrir formulaire

Nom formulaire: ClientAffichage: FormulaireNom filtre:Condition Where:Mode données:Mode fenêtre: Standard

Agrandir (AgrandirFenêtre en V 2010)

Enregistrer la macro : ClientFermer la macro.

Page 73: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 73

B. Attacher une macro à un événement d’un contrôle BoutonDepuis le formulaire A Menu principal en mode Création, sélectionner le bouton CLIENT et sespropriétés événementielles, Attacher (choisir dans la liste déroulante) la Macro Client à l'événementSur clic (de souris) du bouton sélectionné CLIENT.Faire de même les macros suivantes :- Macro Commande avec action OuvrirFormulaire Formulaire Commande et ses produits FP

avec action Agrandir (AgrandirFenêtre en V 2010)et l’attacher de même à l’événement SurClic du bouton Commande et ses produits

- Macro Ventes avec action :OuvrirEtat, Etat : Ventes par Catégorie et par Produit,Affichage : Etat (pas en aperçu)

avec 2°action: Agrandir (AgrandirFenêtre en V 2010)et l’attacher de même à l’événement SurClic du bouton Etat des ventes

- Macro Fermer formulaire avec action Fermer (FermerFenêtre en V 2010)Type objet : Nom :

(volontairement, on ne précise pas Type et Nom pour que cette macro serve pour fermer un formulaire quelconque)

Remarque : lorsque le formulaire Menu principal est ouvert (dans une couche 1)et que l'on ouvre le formulaire Client (dans une couche 2), celui-ci est 'devant'ou 'dessus' le formulaire Menu principal.Si on ne veut plus utiliser le formulaire Client et retrouver le formulaire Menu, il ne faut pas exécuterl'action OuvrirFormulaire Menu (celui-ci est encore ouvert et on laisserait ainsi le formulaire Clientouvert) mais il faut exécuter l'action Fermer le formulaire Client (fermer la couche 2) et retrouverautomatiquement le Formulaire Menu (en couche 1).

Les formulaires s'empilent à l'ouverture et se dépilent à leur fermeture.

Il faut TOUJOURS fermer un formulaire si on ne travaille plus avec. C'est une ERREUR grave d'ouvrir un nouveau formulaire et laisserl'ancien ouvert sans raison.

Ajouter (sans assistant contrôle) un bouton libellé Fermer dans le pied du formulaire Client et y attacherla macro Fermer formulaire.

Remarque : possibilité de copier-coller le bouton Fermer du formulaire Client vers d'autres formulaires(Produits, facture,…) car il a même libellé et même macro quels que soient les formulaires.

- Macro Fermer menu avec action Quitter (QuitterAccess en V 2010)(Quitter = Quitter Access donc fermer le formulaire Menu, l'application access et Access)et l’attacher de même à l’événement SurClic du bouton Sortie

Compléter le menu pour gérer le lancement de tous les Formulaires et Etats disponibles…

c1: Menuc2: Client

Page 74: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 74

Ch11. Les recherchesUtiliser le fichier Fac11a2007.accdb pour la suite

Dans une application, il y a des traitements Spécifiques à 1 sujet (par exemple calcul du total d'unecommande) mais il y a aussi des traitements Classiques que l'on retrouve dans tous les sujets.

Les traitements classiques sur les enregistrements d'un formulaire sont : Ajouter un enregistrement :

Proposé automatiquement par Access : Modifier un enregistrement :

Proposé automatiquement par Access : saisir par formulaire et c'est tout. indique 'en cours de saisie'. Supprimer un enregistrement :

Proposé automatiquement par Access : sélectionner l'enregistrement complet par puis touche Suppr Trier (classer) des enregistrements :

Proposé automatiquement par Access : sélectionner un contrôle puis Changer d'enregistrement (premier, précédent, suivant, dernier) :

Proposé automatiquement par Access : Consulter un enregistrement :

Proposé automatiquement par Access : le Formulaire Colonne simple Calculer sur des enregistrements :

Proposé automatiquement par Access : la Requête et le Formulaire un peu. Lister tous les enregistrements :

Proposé automatiquement par Access : le Formulaire Tabulaire Imprimer des enregistrements :

Proposé automatiquement par Access : l'Etat

Toutes ces solutions proposées par Access sont entièrement satisfaisantes.

Rechercher un enregistrement unique :

Proposé automatiquement par Access : mais saisie clavier du critère de recherche, pas deproposition de valeurs par liste déroulante donc solution à améliorer par un développement personnel. Rechercher (Filtrer) plusieurs enregistrements :

Proposé automatiquement par Access : mais saisie clavier du critère de recherche, pas deproposition de valeurs par liste déroulante, donc solution à améliorer par un développement personnel.

Il y a plusieurs types de recherche ou filtrage :Cas Mono critère Multi critères Mono valeur du critère Multi valeurs du critère Mono résultat Multi résultats

1 X X X2 X X X3 X X X4 X X X

Nous allons mettre en œuvre les cas 1, 2 et 4 pour commencer.

Nous présenterons seulement les résultats du cas 3.

Page 75: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 75

1. Recherche mono critère, mono valeur du critère,mono résultatA. Rechercher un client sur son Nom Prénom par liste déroulante

Objectifs :Rechercher automatiquement un enregistrement complet CLIENT (Nom, Prénom, Adresse, ...) à partirde son Nom-Prénom saisi dans une Liste Déroulante proposant tous les Noms-Prénoms Triés desclients existants. 3 Etapes :1) Définir une requête pour une liste de clients triée pour alimenter une liste déroulante2) Définir un contrôle liste déroulante pour choisir un client à rechercher3) Définir un programme exécuté sur un évènement pour rechercher après la saisie du client

Procédure :1) Créer une requête sur la table Client avec Num Client, Nom, Prénom,triée sur Nom puis Prénom(donc la colonne Nom doit être à gauche du Prénom pour tri prioritaire)nommée R22 Client pour liste déroulante.Ce résultat alimentera la liste déroulante (propriété Contenu).Le Nom-Prénom permettra de choisir un client (visible dans la liste déroulante)Le Num Client sera le véritable critère de recherche (INvisible dans la listedéroulante)

2) Ajouter une liste déroulante de recherche sur le Formulaire Client :

Vérifier dans l'onglet Création, Zone Contrôles que l'Assistant controle est ACTIF( le bouton est orangé s'il est actif lorsque la souris n'est pas dessus, sinon cliquer dessus pour l'activer).

Ajouter, en mode assistant-contrôle, un contrôle Liste déroulante dans l’en-tête du formulaireClient avec les réponses suivantes pour l'assistant :

- Je veux que la liste déroulante recherche les valeurs dans une table/requête- Requête : R22 Client pour liste déroulante- Les 3 colonnes pour liste déroulante- Pas tri (déjà trié dans la requête)- Réduire à 0 cm la largeur de la colonne Num Client

pour la cacher (on peut aussi la visualiser si besoin)- Garder Num Client dans le contrôle (critère de recherche)- Après sélection d’une valeur : Mémoriser la valeur

pour usage ultérieur (donc pas de stockage de cette saisiedans un champ d'une table)

- Etiquette pour la liste déroulante : Rechercher le client :-

Ce Contrôle est donc Indépendant d'une quelconque source (champ).

3 colonnes dela liste déroulante

(Num Client) Nom Prénom

Le Contrôlestocke

Num Client

ChampIndépendant = Vide

ListeTOUJOURS

Triéepour

faciliter lechoix

Page 76: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 76

Par les propriétés du contrôle Liste Déroulante :- nommer le contrôle par (onglet Toutes) la propriété Nom : ChoisirClient- visualiser et vérifier les propriétés (onglet Toutes) définies via l’Assistant :

Origine (Table ou Requête), Contenu (nom de la requête ou sa définition SQL), Colonne liée (rang dela colonne de la requête à garder dans le contrôle =1=Num Client),Largeur des 3 colonnes (vérifier 0 Cm pour la première colonne donc Num Client à cacher)...

Tester le fonctionnement de la liste déroulante en Mode Formulaire (une saisie, pas encore unerecherche) puis passer en Mode Création pour définir la Recherche.

3) Attacher automatiquement une Macro à un évènement de la Liste Déroulante:Toujours par les propriétés du contrôle Liste Déroulante, à partir de l’événement Après MAJ(Après Mise à Jour donc après la saisie par la liste déroulante),activer (en fin de ligne Après MAJ) le générateur ... (de Macros) et saisir la macro

Actions ArgumentsAtteindreContrôle Nom du contrôle : Num Client

(Choix du contrôle dans lequel chercher)TrouverEnregistrement (Visualiser l’aidepar F1 )

Rechercher : = ChoisirClient(choix de la valeur à chercher)

Explication de cette macro :- AtteindreContrôle permet de positionner le curseur sur le contrôle (Zone de texte) Num Client pour

permettre la recherche sur le champ Num Client de ce contrôle.

- TrouverEnregistrement va rechercher dans le champ Num client de la Table Client le NUMEROsaisi dans le contrôle Liste Déroulante (nommé pour cela), l’argument Rechercher fait référence àl’identificateur de la Liste Déroulante [ChoisirClient] dont le contenu est évalué par l’opérateur =Si on ne met pas le =, c'est le mot "ChoisirClient" qui est recherché au lieu du contenu de ChoisirClientCette macro est déclenchée après la saisie dans la liste déroulante, donc par l’événement Après MAJ(Mise à Jour car nouveau contenu arrivé par la saisie) de ce contrôle Liste Déroulante. Cette macro n'a pas denom car elle est incorporé à cette liste déroulante

Passer en mode Formulaire et tester la liste déroulante (qui permet de rechercher un client et de sepositionner sur l’enregistrement correspondant).

Maintenir à jour le contenu de la liste déroulante par rapport aux Ajout/Suppression de client.

ATTENTION : Le principe dans Access est qu'à l'ouverture d'unformulaire, chaque contrôle exécute les données de sa définition puisgarde cette définition même si les données liées à sa définition changent.

Donc, pour notre liste déroulante, à l'ouverture, elle défini par exemple

Si en utilisant le formulaire on ajoute le client AAA Alainet supprime BON Marc , il faudrait que la liste déroulantesoit actualisée pour afficher en permanence les bonnesdonnées (les actuelles) disponibles à rechercher.

Ici, les crochets [ ] ne sont pas obligatoires. Ils sontnécessaires lorsque le nom comporte des espaces.exemple : [Choisir le client]

Page 77: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 77

B. Auto-Actualiser la liste déroulante sur sa définitionVérifier dans les propriétés de la liste déroulante son Nom : ChoisirClient1) Créer une macro pour actualiser la liste déroulante

- Action BoiteMsg, (cette action n'a ici qu'un but pédagogique pour comprendre l'exécution del'évènement "Sur réception focus" à voir plus loin) Message : APRES le clic, AVANT le déroulé.On supprimera plus tard cette action inutile.

- Action Actualiser, Nom contrôle : ChoisirClient pour que la liste consulte et exécute ànouveau sa définition (requête R22 Client pour liste déroulante) donnant la liste ACTUELLE desclients de la table Client).Enregistrer la macro : Actualiser LD Form Client2) Exécuter la macro automatiquementOn pourrait mettre un bouton sur le formulaire exécutant la macro ci-dessus etdemander à l'utilisateur de ne pas oublier de cliquer sur ce bouton avant d'utiliser la liste déroulante.On préférera un système AUTOMATIQUE…Attacher la macro à la liste déroulante sur l'évènement Sur Réception Focus (événement qui seproduit après le clic sur la liste, quand la liste "receptionne le curseur"et avant que la liste des Clients soit déroulée) pour que la macro soitexécutée automatiquement chaque fois que l'on clique sur la listedéroulante et juste avant de dérouler les clients.

Tester en :- en ajoutant un client (clic en bas de formulaire sur le bouton Nouveau),saisir le Nom Prénom AAA Alain et l'enregistrerdans la table Client par bouton Précédent

ou dans onglet Accueil par sans changerd'enregistrement.

Noter que dans la barre grisée de gauche, le crayon indique quel'on est en cours de saisie dans le formulaire et que les données saisiesne sont pas encore transférées à la table source du formulaire (Client). Enregistrer supprime le 'crayon'- tester la liste déroulante- supprimer l'action BoiteMsg de la macro pour ne laisser que Actualiser qui sera invisible à l'exécutionet ajouter (optionnellement) l'action Bip (bip sonore) pour rappeler que la macro existe.- supprimer le client AAA Alain à sélectionner par le formulaire : clic sur puis touche Suppr

Maintenant, faire de même sur le formulaire Produit pour rechercher un Produit.

2. Recherche mono critère, mono valeur du critère,multi résultatsA. Rechercher des clients sur leur ville par liste déroulante

Objectifs :Rechercher automatiquement les enregistrements de CLIENT (Num, Nom, Prénom, Adresse, ...) à partirde leur Ville saisie (choisie) dans une Liste Déroulante proposant toutes les Villes (sans doublon)Triées des Clients existants. 3 Etapes :1) Définir une requête pour une liste de villes pour alimenter une liste déroulante2) Définir un formulaire avec contrôle liste déroulante pour choisir une ville à rechercher et avec uncontrôle sous-formulaire pour afficher une liste de Clients3) Définir un programme exécuté sur un évènement pour rechercher après la saisie de la ville

Fin TD7

Page 78: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 78

Objectif : afficher les clients de la ville sélectionnée

Procédure

1) Une Requête pour alimenter la liste modifiable

2) Un formulaire pour sélectionner la ville et afficher les clientsCréer un formulaire vide, bouton Création de Formulaire (basé sur aucune table/requête).

Vérifier que le bouton Assistant contrôle est désactivé(pas orangé) et ajouter (sans assistant) sur ce formulaire uneliste déroulante :Indépendante (= sans valeur pour la propriété Source doncIndépendante des données des tables),

liste avec un Contenu (propriété) défini par la requête précédente (R23...) puis nommer (propriété Nom) la Liste déroulante VilleSélection.

Enregistrer ce formulaire Clients à sélectionner par ville.

Garder ce formulaire ouvert et créer une requête pour filtrer les résultats…(voir page suivante)

Le champ Ville seulement.Regroupement pour regrouperen 1 seul exemplaire chaque ville.Tri Croissant pour la liste.Enregistrer :R23 Client Ville unique

Page 79: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 79

3) Une requête de sélection pour filtrer les clientsbasée sur la table Client avec comme critère de sélection la valeurdu contrôle liste modifiable VilleSélection (avec Générateur)du formulaire Clients à sélectionner par ville

Enregistrer et fermer cette requête : R24 Clients sélectionnés par ville

4) Une liste de clients dans le formulaireRetourner au formulaire Clients à sélectionner par ville.Ajouter en mode Assistant contrôle un contrôle de type Sous-formulaire basé sur la requêteprécédente R24 avec tous ses champs (pour afficher les clients sélectionnés sur la ville) et enregistrer leFormulaire généré : Clients sélectionnés par ville SF. (SF pour Sous Formulaire)

2 éléments sont créés par l'assistant :- un contrôle de type SF nommé par défaut

Clients sélectionnés par ville SFqui est un CONTENANT(et son Etiquette)

- un formulaire en mode liste (de client) nommépar défaut Clients sélectionnés par ville SFqui est la source du contrôle SF précédent donc son contenu

Enregistrer et utiliser ce formulaire.

Autre représentation : Formulaire Clients à sélectionner par ville et son Sous formulaire (SF):

En résumé : Le formulaire Principal (Clients à sélectionner par ville) contient unContrôle de type SF (Clients sélectionnés par ville SF) qui contient unFormulaire en mode Liste (Clients sélectionnés par ville SF) qui est basé sur uneRequête sélection (R24 Client sélectionnés par ville).

Problème : Le contrôle sous formulaire ne "regarde" par défaut la valeur de la liste déroulante (ville)qu'à l'ouverture du sous-formulaire (la ville est vide à ce moment là).Si on saisit ensuite une ville, la liste des clients reste vide. Tester cette solution temporaire.Solution : Il faut demander explicitement au contrôle SF d'Actualiser son contenu après chaquenouvelle saisie de la liste déroulante Ville (donc Après la Mise à jour du contenu de la listedéroulante).

Contrôle de type SFContrôle type Liste déroulante

Formulaireprincipal

Requêtesource du

Formulaire

Formulairesource du

contrôle de typeSF

Clients sélectionnés par ville SFR24Clients sélectionnés par ville

Clients à sélectionner par ville

Le CONTENANT : le contrôleLe contenu : le formulaire

Page 80: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 80

5) Macro pour 'Actualiser' un contrôle Sous-formulaireNous avons déjà vu ce principe d'actualisation dans la recherche précédente.Nous voulons créer une macro mais elle sera spécifique à ce contexte donc nous choisissons de générerune macro sans nom qui sera 'Incorporée' dans ce formulaire.A partir de l'événement Après MAJ de la liste déroulante(donc après chaque nouveau choix de ville) utiliser le bouton pour créer la macro suivante :Condition Action Arguments

Actualiser Nom contrôle : Clients sélectionnés par ville SF. Le contrôle de type Sous-formulaireTester…

3. Recherche mono critère, multi valeurs du critère,multi résultatsExemple : rechercher les clients sur le critère de la ville pour plusieurs villes possibles : ici Tarbes etToulouse sélectionnées parmi 4 villes proposées : Albi, Pau, Tarbes et Toulouse

Cette fonctionnalité peut être mise en place dansAccess mais est relativement compliquée.

Nous ne la verrons pas pour le moment.

Si vous êtes intéressé, demander à l'enseignant…

4. Recherche multi critères, mono valeur du critère,multi résultatsExemple : liste des clients de la ville de Toulouse ET ayant une date d'entrée supérieure une date.

Page 81: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 81

Copier le Formulaire Client à sélectionner par ville (clic droit sur ce nom) etColler en renommant Client à sélectionner par ville et date entréeOuvrir en mode création ce nouveau formulaire et supprimer le grand contrôle sous formulaire.Ajouter un contrôle zone de texte pour saisir la date, le nommer DateSélection, propriété Format : Date,abrégé, vérifier que Sélecteur de date est à : À certaines dates pour avoir le calendrier pour saisir.Enregistrer ce formulaire.Garder ce formulaire ouvert et créer une requête pour filtrer les résultats.

1) Une requête de sélectionbasée sur la table client avec comme critère de sélection les valeurs du formulaire Clients à sélectionnerpar ville et date entrée :- contrôle liste modifiable VilleSélection (avec Générateur)- contrôle liste modifiable DateSélection (avec Générateur) avec l'opérateur > en début de critèreLes 2 critères sont sur la même ligne Critère donc les 2 critères sont reliés par ET.Pour un lien par OU, les mettre sur 2 lignes distinctes, la ligne critère et une ligne en dessous

Enregistrer cette requête : R25 Clients sélectionnés par ville et dateFermer la requête.

2) Une liste de clients dans le formulaireRetourner au formulaire Clients à sélectionner par ville et date entrée.Ajouter en mode Assistant contrôle un contrôle de type Sous-formulaire basé sur la requêteprécédente avec tous ses champs (pour afficher les clients sélectionnés) et enregistrer le Formulairegénéré : Clients sélectionnés par ville et date SF. (SF pour Sous Formulaire)

Problème : Le contrôle sous formulaire ne "regarde" par défaut les valeurs des 2 contrôles de critèrequ'à l'ouverture du sous-formulaire (les 2 contrôle sont vides à ce moment là).Si on saisit une ville ou une date, la liste des clients reste vide. Tester cette solution temporaire.Solution : Il faut demander explicitement au contrôle SF d'Actualiser son contenu après chaquenouvelle saisie de la liste déroulante Ville et du contrôle Zone de texte date (donc Après la Mise à jourdu contenu de ces contrôles ).

3) Macro pour 'Actualiser' un contrôle Sous-formulaireNous avons déjà vu ce principe d'actualisation dans la recherche précédente.Nous voulons créer une macro mais elle sera utilisée 2 fois (chacun des 2 contrôles doit actualiser le SF ).Nous choisissons de générer une macro AVEC un nom qui sera appelée dans les 2 contrôles duformulaire.Créer la macro ci-dessous.Condition Action Arguments

Actualiser Nom contrôle : Clients sélectionnés par ville et date SFLa nommer Rechercher actualiser SF ville et date et la fermer.

Sur le formulaire, à partir de l'événement Après MAJde chacun des 2 contrôles de critère, associer la macro précédente.Rappel : Après MAJ se lie Après MiseA Jour et non pas Après MAJuscule !

Enregistrer et Tester…

Utiliser le fichier Fac12a2007.accdb pour la suite

Page 82: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 82

Ch12. Les Formulaires complexes suite1. Sous Formulaire basé sur Requête avec calculs

But: Facture

1) Créer une Requête nommée R26 Facture détail qui sera la source du SFRemarque:le champ Ref commande de la table CommandeLigneProduit doit être présent dans la requête pourpouvoir assurer la relation avec Num Commande de la table CommandeEnTete (base du FP) : voirrelation ci-dessus

Désignation est ici inutile car Ref Produit affiche2) Créer le formulaire Facture

en assistant formulaire avec la table CommandeEnTete (pour FP) et la requête R26 Facture détail(pour le SF) en n'affichant pas Ref Commande dans le SF, avec pour le SF Disposition Tabulaire(au lieu de Feuille de données proposée), style : Access 2007 etenregistrer sous Facture et ses produits FP et Facture et ses produits SF.En mode création, réduire les largeurs des contrôles comme sur l'exemple plus haut.

3) Ajouter en bas de facture la somme de la factureAgrandir à la souris la zone Pied de formulaire sur le SF(et pas Pied du formulaire principal)et y ajouter un contrôle de type Zone de texte pour calculerle total de la facture.

Définir la propriété Source contrôle en utilisant le générateur d’expression avecFonction /Somme puis dans le générateur d’expression,sélectionner le formulaire courant (pas dans la liste desFormulaire MAIS en haut de la liste de la colonne degauche) Facture et ses produits SF puis <Liste dechamps> puis Total du produit puis OK. Enregistrer, passer en mode formulaire et fermer.

grâce à la requête‘R26 Facture détail’,base de ceSous-formulaire (voirplus loin)

Penser à enregistrer la requêteavant de faire la colonnecalculée "Total du produit" pourpouvoir accéder aux colonnesQuantité et Prix de la requêtecourante

Ici, le Taux estrecherché explicitementdans la table Produitcar la colonne Tauxn'est pas présente dansles colonnes de larequête courante.

Table

RequêteAjouter 1 contrôledans le pied du

Sous-Formulaire(et PAS dans le pied

du Formulaire)princpak

Page 83: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 83

Ch13. Introduction auxBases de Données et à ACCESS

ACCESS : Système de Gestion de Bases de Données sur micro-ordinateur. (SGBD)

1. Un Système de Gestion de Bases de DonnéesUn système de gestion de bases de données est un logiciel spécialisé dans l'organisation et la gestiond'un nombre important d'informations contenues au sein d'un système informatique.Il permet d'optimiser (facilité, rapidité, sécurité) les opérations d'ajout, modification, suppression,classement, sélection, édition et impression sur des Applications de Bases de Données dans un contexteMulti-utilisateur (Partage d'une application par plusieurs utilisateurs via le réseau). C'est une différence importante avec le Tableur qui est multi-utilisateurs en lecture mais mono-utilisateur en écriture (donc pas de vrai partage collectif d'informations)Il permet de développer des applications axées sur les Données. (nombre et complexité des Données) Le Tableur gère plutôt des Données simples en nombre limité

2. Une Application de Base de DonnéesC'est une application développée grâce à un SGBD qui contient les Traitements qui s'appliquentsur des Données structurées en Base de Données.

3. Une Base de DonnéesUne base de données est un ensemble d'informations relatives à un thème et structurée d'une manièrebien spécifique dans le but d'en optimiser la gestion.La base de données est composée de Tables.exemple: Le SGBD Access gère une application de gestion d'une LIBRAIRIE utilisant une Base deDonnées, base constituée des Tables : Livre, Editeur, Client, Commande, ...

Une table est constituée comme un tableau à deux dimensions :- les lignes représentent les enregistrements (éléments d'un ensemble, individus d'une population),- les colonnes représentent les champs (caractéristiques de chaque élément).

exemple: Table Livre.

Référence Titre Editeur Prix123456 Excel pour Windows Inter-Edition 25 €123698 Word pour Windows PSI 15 €123581 VBA pour Windows SYBEX 26 €541258 Access pour Windows Micro-Application 19 €

Une base de données Relationnelle comporte plusieurs tables ouvertes simultanément etliées entre elles par des champs mis en relation.

(voir plus loin Modélisation des Données) --- C'est une autre différence importante avec le Tableur où les données sont organisées en1 ou plusieurs Tableaux de Ligne-Colonne mais sans lien entre les tableaux ---

4.pour développer… l'application

de TypeBase de Données

L'outilSGBD…Access

Traitements

Base deDonnées

Table1

Table2

Page 84: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 84

ACCESSACCESS est un Système de Gestion de Bases de Données Relationnelles. (SGBDR)

Les Données contenues dans la base de données peuvent être traitées de 3 manières :1. à l'aide de commandes SQL stockées dans des Requêtes

génération interactive dans environnement graphique (très simple et très puissant)

2. à l'aide d'actions stockées dans des Macros-programmes :mode programmation niveau 1 (très simple mais limité en performances)

3. à l'aide d'instructions du langage VISUAL BASIC (VBA) stockées dans des procédures oufonctions : mode programmation niveau 2 (très performant mais complexe)

Les produits majeurs de type SGBD sur microordinateur sont :-Pour petites applications (mono-utilisateur ou moins de 20 utilisateurs simultanément):

ACCESS,-Pour grosses applications (plus de 20 utilisateurs, performances +, sécurité +, pour le WEB):

ORACLE (la référence), SQL Serveur (MicroSoft), MYSQL (gratuit), PostGreSQL (gratuit),SYBASE, …

ACCESS gère les éléments suivants :La Table : elle stocke les Données de l'application.La Requête : elle stocke des Traitements basés sur les données des tables.Le Formulaire : il affiche un Ecran à l'utilisateur mis en forme pour gérer les données.L'Etat : il met en forme les données pour les destiner à l'Imprimante.La Macro : elle stocke des Actions simples pour définir des traitements.Le Module : il stocke des Procédures et Fonctions en langage Visual Basic pourApplication (VBA) pour définir des traitements. C'est le mode Programmation.

A. Choix entre Access et Excel pour développer une application ?Chaque logiciel a des avantages et des inconvénients, utiliser l'un ou l'autre en fonction :- du contexte : caractéristiques des Données, caractéristiques des Traitements, Partage entre plusieursutilisateurs, volonté de guider l'utilisateurs, compatibilité avec d'autres applications.- de votre niveau de formation : modélisation des Données nécessaire pour AccessChoisir Excel pour :- sa simplicité, sa rapidité de développement, sa souplesse, ses graphiques, ses outils particuliers(Solveur), sa grande diffusion, ses nombreuses fonctions prédéfinies de gestion, sa référence enentreprise.Mais ne pas oublier qu'Excel :- gère mal la cohérence des données, ne gère pas le partage d'une application entre plusieurs utilisateurs,ne gère pas les liens entre différentes populations, est limité dans le nombre et la complexité des données

Choisir Access pour :- sa accessibilité par rapport aux autres SGBD, son aspect RAD (Développement Rapide d'Application),sa référence en entreprise, sa grande diffusion, le modèle Relationnel établissant des liens entre lespopulations, le partage des données entre plusieurs utilisateurs, le contrôle de la cohérence des données(intégrité référentielle) , le nombre et la complexité des données gérées,Mais ne pas oublier qu'Access :- est limité à environ 15 utilisateurs simultanés en Partage, n'est pas un SGBD strict mais orientéfichiers, n'est pas client-serveur de base et surtout nécessite d'abord une étape de modélisation desdonnées avant de développer.

VBA NON vudans cetteformation

Page 85: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 85

Ch14. Correction extension: les TablesA. Créer la table CategorieLe produit CAN001 fait référence à la Catégorie Imprimante.Le produit EPS001 fait référence à la Catégorie Imprimante.Pour permettre de saisir la Catégorie d'un produit en la choisissant dans une liste, on défini une tablelistant les différentes Catégories.Onglet Créer, Bouton Table, Mode Création, Nom : CatégorieNom du Champ Type de données Propriété du champNum Catégorie NuméroAutoNom Catégorie Texte Taille : 20

Indexé : Oui sans doublons pour interdire de saisir 2 foisImprimante par exempleNull interdit : OUI donc vide interdit donc saisieobligatoire

Vérifier que vous avez géré la clé primaire sur Num Catégorie.Relations :Une catégorie de produit ne pointe pas vers 1 seul Produit ou 1 seul Client ou 1 seule Commande ou1 seul Produit commandé donc pas de clé étrangère vers 1 clé primaire d'une autre table.Catégorie n'est pas une table Fils pointant (référant) vers 1 Père maisCatégorie est une table Père pointée (référée) par plusieurs Fils (plusieurs Produits).Enregistrer la table : Categorie (Règle : Première lettre de chaque mot en majuscule, sans accent, sansespace, au singulier) et fermer cette table.Saisir les données comme dans l'exemple ci-contre.

Créer aussi un formulaire Catégorie par l'assistant.

B. Modifier la table ProduitUn Produit fait référence à 1 seule Catégorie (Fils et son Père).Produit est une table Fils donc ajouter une clé étrangèreRef Catégorie pour future Relation avec Num Catégorie :Type : Numérique, Entier long (compatible avec ).Null interdit : NON donc vide autorisé donc saisie facultative

(noter éventuellement OUI pour obliger la saisie)Définir pour Ref Catégorie une liste déroulante pour effectuer les saisies par choix de valeur de Catégorie.

Remarque : Si aucune des 2 tables Catégorie et Produit n'existait, l'ordre de création serait :D'abord Catégorie car c'est une table Père et les Pères naissent avant leurs Fils.Ensuite Produit car c'est une table Fils pointant vers un Père et les Fils naissent après leur Père

Page 86: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 86

Tirer la relation entre les tableset penser à cocher Intégritéréférentielle pour activer cettevérification (?) qui se manifestepar le 1 et ∞sur le lien.

Saisir la référence de la Catégorie par la liste déroulante pour tous les produits sauf pour Son002

C. Créer la table FournisseurOnglet Créer, Bouton Table, Mode Création, Nom : FournisseurNom du Champ Type de données Propriété du champNum Fournisseur NuméroAutoNom Fournisseur Texte Taille : 20

Indexé : Oui sans doublons pour interdire de saisir 2fois le même fournisseur par exempleNull interdit : OUI donc vide interdit donc saisieobligatoire

Ville Fournisseur Texte Taille : 20Format : > (pour majuscule)

Vérifier que la clé primaire est sur Num Fournisseur.

Relations :Un fournisseur de produit ne pointe pas vers 1 seul Produit ou 1 seul Client ou 1 seule Commande ou1 seul Produit commandé ou 1 seule Catégorie donc pas de clé étrangère vers 1 clé primaire d'une autre table.

Enregistrer la table : Fournisseur (Première lettre de chaque mot en majuscule, sans accent, sans espace,au singulier) et fermer cette table.Créer aussi un formulaire Fournisseur par l'assistant.

D. Créer la table Intermédiaire ProdFourRelations :Un Produit fait référence à (peut être acheté chez) plusieurs Fournisseurs dans certains cas.Un Fournisseur fait référence à (peut nous vendre) plusieurs Produits.

Nous sommes dans le cas Frères - Sœurs vu précédemment (page 10):Un Frère peut avoir de 0 à N Sœurs, une Sœur peut avoir de 0 à N FrèresPour gérer cette relation, on ajoute une nouvelle table intermédiaire avec

Clé étrangèreAVEC doublons

"Fils"

x

x

xx

xx

x

FRERE SOEUR

xun champ Ref Soeurcontenant la valeur del'identification de Sœur

un champ Ref Frèrecontenant la valeur del'identification de Frère

D'éventuels champsdépendants de frèreET sœur.

Clé primaireSANS doublon

"Père"

Clé étrangèreAVEC doublons

"Fils"

Clé primaireSANS doublon

"Père"

Saisie facultative : voirNull interdit : NON

Il suffit d'1 cas pour nousobliger à gérer le problème.

Page 87: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 87

Donc pour nos Produits et Fournisseurs:

Produit Fournisseur

Cette solution permet :Un Produit fait référence à (peut être acheté chez) plusieurs Fournisseurs.Un Fournisseur fait référence à (peut nous vendre) plusieurs Produits.Définitions de la table ProdFour: ce nom intègre les 2 tables croisées : Produit et Fournisseur

Clé étrangère : Ref Produit et sa liste déroulante

Clé étrangère : Ref Fournisseur et sa liste déroulante

Clé primaire composée de Ref Produit + RefProduit

C'est cette clé primaire sur les 2 champs Ref Produit + Ref Fournisseur qui interdit un doublon surle couple ACE001 + 1

ProdFour

6

Le produit ACE001est fournipar 1 et 2

Le fournisseur 2fournit

ACE001 et ACE002

Page 88: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 88

E. Tirer les Relations avec Intégrité Référentielle:Tirer les relations entre les tables et penser à cocher Intégrité référentielle pour activer cettevérification (?) qui se manifeste par le 1 et ∞sur le lien.

F. Modèle Conceptuel de Données (MCD) à la source duModèle Physique Access

MCD Facturationdessiné avec le logiciel gratuit Looping.

(voir enseignant pour obtenir ce logiciel si besoin)

Page 89: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 89

Ch15. Correction extension: les RequêtesUtiliser le fichier Fac06a2007.accdb pour la suite

A. Requête simpleConsulter les nouvelles tables et leurs données.Voici la table produit : 14 enregistrements.

Remarque : le produit SON002 n'as pas de valeur pour Ref Catégorie !!!1) Requête "R16 Produits sélectionnés"Question : Liste de produits classée par Num Produit et composée de :a) produits avec "imprimante" n'importe où dans la désignation et dont le prix est inférieur à 1000 €

etb) produits de la catégorie Livre traitantd' "access" : attention à ne passélectionner un clavier avec unedésignation " Clavier accessible"

Solution : requête basé sur la table Produit avec 4 critères de sélection.La sélection pour "Livre" est obtenue par 4 dans Ref Catégorie

B. Requête multitable1) Requête "R17 Produit et sa Catégorie"Question : Liste des produits classée par Num Produit avec affichage de tous les champs de produit(y compris Ref Catégorie) et affichage du nom de la catégorie du produit

Page 90: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 90

Solution : requête basé sur les table Produit et Catégorie Liées.

Il n'y a QUE 13 enregistrements !!! SON002 a disparu : pourquoi ?Solution : SON002 à disparu car le lien Ref Catégorie - Num Catégorie estsans effet car ce produit stocke (vide) dans Ref catégorie qui ne peutêtre retrouvé = par le lien dans NumCatégorie de la table Catégorie.

2) Requête "R18 Produits moyenne prix achat"Question : Liste des produits classée par Num Produit avec moyenne des prix d'achat des différentsfournisseurs.

Etape 1 : Liste des produits classée par Num Produit avec PLUSIEURS prix d'achat car plusieursfournisseurs par produit (pour certains).

17 enregistrements avec 1 doublon et un triplet sur Produit

Etape 2 : Liste des produits classée par Num Produit avec regroupement des mêmes produits etcalcul de la moyenne des prix d'achat des différents fournisseurs.

14 enregistrements seulementcar le doublon est regroupé en 1 enregistrement et le triplet est regroupé en 1 enregistrement.

Page 91: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 91

Ch16. Correction extension : Formulaires

A. Formulaire simple1) Formulaire "Fournisseur"Onglet Créer, Bouton Plus de formulaire, AssistantChoisir la table Fournisseur et tous ses champsChoisiren colonne simple et nommer FournisseurChoisir style Access 2007 (ou autres).

Ici, on ne personnalise pas le résultat de l'assistant

B. Formulaire Tabulaire basé sur une requête1) Formulaire "Produit et sa Catégorie"

Onglet Créer, Bouton Plus de formulaire,AssistantChoisir : la requête R17 Produit et sa CatégorieChoisir : tous ses champsChoisir : en Tabulaire etnommer Produit et sa Catégorie.

Ici, on ne personnalise pas le résultat del'assistant

C. Formulaire produit à compléterAjouter un contrôle pour saisir-choisir la Catégorie du produit.En mode Création, utiliser dans l'onglet Création le bouton 'Ajouterdes champs existants' puis glisser sur le formulaireRef Catégorie.Passer en mode Affichage, sélectionner le dernier produit par

(SON002) etsaisir sa catégorie 1-Ecran

Fin des extensions à faire sans assistance du document.

Page 92: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 92

Ch17. Des erreurs à ne pas faire Proposer de modifier la valeur de la clé primaire d'un enregistrement

et surtout pas par liste déroulante proposant les autres numéro d'élève.On n'identifie pas un enregistrement par l'1 des autres enregistrements !La valeur de la clé primaire, une fois attribué à un enregistrement et donc pointée par d'autresenregistrements d'autres tables, n'est généralement JAMAIS modifiée.(Imaginer, si on changeait votre numéro de Sécurité Sociale, les conséquence qui cela entrainerait !)

Proposer une liste déroulante NON triée :

Difficile de choisir une personne parmi N si pas trié !

Ne pas afficher directement des Données brutes de présentation des Tables ou Requêtesmais plutôt les afficher par l'intermédiaire de Formulaires qui les mettent en FORME.

Mise en forme :

Page 93: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 93

Ch18. Gestion des Images dépendantesd'Enregistrements d'une TableL'objectif est d'afficher une image différente dans un Formulaire oudans un Etat pour chaque enregistrement d'une Table.Les 3 solutions proposées vont de la plus simple V1 (et la moinsperformante) à la plus complexe V3 (et la plus performante).

Cependant, je propose de sauter ce Chapitre pour voir au Chapitresuivant une autre technique plus simple pour gérer une image parenregistrement : Champ de type Pièce jointe

1. Images et Table : Version1 baséesur Champ OLE

A. Gérer un champ OLEDans la table Produit, ajouter un champ Photo de type Objet OLE:Le type Objet OLE permet de stocker un Objet (tel qu'une feuille decalcul Excel, un document Word, des graphiques, des sons, des images outoute autre donnée binaire) dans une table.Si la définition du champ OLE est facile, la saisie est pluscompliquée :

- En mode Affichage des données de la tableProduit, un clic droit sur le champ Photo du 1°produit permet de choisir Insérer un objet… puis par la fenêtre de Parcourir de choisir unfichier image puis OK. Malheureusement, cette procédure génère l'affichage suivantPackage qui ne permettra pas l'affichage de l'image dans le formulaire !!!Le bon résultat de la saisie doit afficher Image ou Image bitmap dans le champ Photo.

- Pour contourner ce problème (si vous avez une solution, je suis preneur), nous allonssaisir en faisant un Coller dans le champ Photo. Il faut donc une image à copier, plusieurs cas :- depuis une image du site Google-Image, clic-droit Copier ou- depuis le document Word fourni 3 images pour coller dans access.docx dans lequel on a insérédes images depuis des fichiers image de nos fichiers de notre disque, clic-droit sur l'image de lapage word, Copier- Un cas qui ne marche pas : depuis l'explorateur de fichier, sur un de nos fichiers image, clic-droit Copier NE permettra pas l'affichage dans le formulaire.Donc, une fois le presse-papier chargé par un Copier, faire un Coller sur le champ Photo enmode Affichage des données. La photo n'est pas visible, seul le mot Image apparait.

En plus des problèmes de saisie, nous avons des problèmes de taille de l'application Access.En effet, pour 3 images collées (tailles de ces 3 fichiers : 40ko + 50 ko +50 ko = 140 ko) depuis lefichier Word, l'application croit de 1.5 Mo soit environ de 500 ko par image.

B. Gérer un contrôle de formulaire pour afficher l'imageDepuis le formulaire Produit en mode Création, cliquer Ajouter des champs existants puis glisser lechamp Photo sur le formulaire. Un contrôle de type 'Cadre d'objet dépendant' (dépendant de chaqueenregistrement) est ajouté. La source du contrôle est le champ Photo de la table. Gérer la propriétéMode affichage à Zoom ou Echelle. La saisie peut se faire dans la table ou dans le formulaire, enmode affichage, par clic droit sur la zone d'image puis par Coller (après avoir fait un Copier…).Limitation de cette version : la manière de saisir et la taille du fichier.accdb qui croit de 500k parimage.

Utiliser le fichierFac13a2007.accdb

voir dossier "Images produit" fourni

Page 94: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 94

2. Images et Table : Version 2 basée sur Champ Texteet Macro d'affectation

Exemple : Formulaire Représentant. Il s'agit encore de gérer une image changeant à chaqueenregistrement d'un formulaire.Le principe est différent de celui de la version1 car ici on ne stocke pas lesimages dans un champ de la Table mais à l'extérieur de l'applicationAccess dans un dossier nommé 'images' situé sous le dossier 'Access'contenant l'application 'Facxxa2007.accdb' courante.Ce dossier termine un chemin de dossiers depuis la racine d'un disque :exemple : C:\MesDocuments\Access\images.

C'est le nom de l'image qui estenregistrée dans un champ de typeTEXTE d'une table. (table'Représentant', champ 'NomPhotoRep').exemple de contenu : "Dupond alain.jpg"

L'affichage sur le formulaire est basé sur les 2 données suivantes :1. le nom de l'image 'Dupond alain.jpg' stocké dans le champ de la Table

2. le fichier-image Dupond alain.jpg stocké dans le dossier 'images'.L'image est affichée sur le formulaire (ou Etat) parun contrôle de type Image nommé ici'ImgPhotoRep '. La propriété 'Image' (le nom del'image) n'est pas saisie, normal, ce contrôle ne vapas afficher toujours la même image.Le principe consiste, par une macro, à affecter à lapropriété 'Image' du contrôle 'ImgPhotoRep' duformulaire, un nom d'image stocké dans le champ 'NomPhotoRep' de la table 'Représentant', nomd'image précédé du chemin de dossiers permettant d'atteindre le fichier stocké dans le dossier 'images'.

exemple du chemin complet et du fichier :C:\MesDocuments\Access \images\ Dupond alain.jpg

Ce chemin peut être découpé en 2 parties :1. C:\MesDocuments\Access qui est le dossier où est stockée ' Facxxa2007.accdb'. Cette partie du

chemin peut être déterminée automatiquementpar une instruction VBA :'CurrentProject.Path' signifiant chemin (Path)de l'application Access courante (CurrentProject).

Seules les 3 lignes de VBA du Module1ci-contre seront utilisées.On utilisera une fonction'CheminApplication()' retournant ce chemin, fonction déclarés dans un Module VBA.L'intérêt du chemin automatique est que l'application peut être déplacée sur une autre machine,avec son sous-dossier 'images' et fonctionner correctement.Pour créer un Module, depuis votre application, utiliser le menuCréer>dérouler la liste sous Macro > Module ou afficher l'EditeurVisual Basic par Alt-F11 comme sous Excel. Un module1 est déjàprésent, saisir dans la fenêtre de droite les 3 lignes de code ci-dessus.

Table 'Représentant' fournie.

Dossier 'images' fourni.

Formulaire 'Représentant' fourni.

Module1 à compléter

Page 95: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 95

2. L'autre partie du chemin est : \images\ qui est une constante pour l'organisation que nous avonschoisie (toujours un dossier 'images' sous le dossier de l'application .accdb).

Donc, pour affecter, à la propriété 'Image' du contrôle 'ImgPhotoRep', la valeurC:\MesDocuments\Access \images\ DupondAlain.JPG écrire 'logiquement' :[ImgPhotoRep].[Image] = CheminApplication() & "\images\" & [NomPhotoRep]

Hors programmation en VBA, cette affectation est à gérer sous Access par une macro qui utilise l'action'DéfinirValeur' (= affectation) avec 2 Arguments :Elément : [ImgPhotoRep].[Image]Expression : CheminApplication() & "\images\" & [NomPhotoRep]

Attention, pour trouver cette action DéfinirValeur dans la liste déroulante de la macro, ilfaut Afficher toutes les actions de cette liste par le bouton ci-contre.Cette affectation ne doit être faite que si le 'NomPhotoRep' n'est pas Vide,on utilise donc la partie conditionnelle de la macro avec la condition (voir ce boutonpour afficher la colonne Condition) : [NomPhotoRep] Est Pas Null

Inversement, si le [NomPhotoRep] est Vide, on utilise aussi la partie conditionnelle de la macro avec :[NomPhotoRep] Est Null et on affecte le nom d'une image spéciale "Blank.jpg" :

CheminApplication() & "\images\" & "Blank.jpg"

Résume de la macro [Macro incorporée] d'affectation :

Une macro qui effectue un traitement (Quoi faire), c'est bien !Mais Où (à partir de quel élément Formulaire ou Contrôle) et Quand (à partir de quel évènement dequel élément) lancer l'exécution de cette macro ?

Cet aspect Où/Quand est parfois plus difficile à déterminer que le Quoi faire.Nous souhaitons réafficher l'image chaque fois que leFormulaire active (affiche) un nouvel enregistrement.C'est à partir du Formulaire et

de l'évènement Sur activation que sera déclenchée lamacro sans nom car [Macro Incorporée].

Donc :- le Formulaire, par son évènement Sur activation, déclenche- une Macro [Incorporée] au formulaire qui, suivant que le champ 'NomImageRep' de la table

'Représentant' est Vide ou pas,- affecte, à la propriété 'Image' du contrôle 'ImgPhotoRep' du Formulaire, la valeur du champ

'NomImageRep' contenant un nom de fichier ou l'image spéciale 'Blank.jpg,- tout en gérant le chemin de dossiers menant aux fichiers des images

(C:\MesDocuments\Access\images\) grâce à- la fonction VBA 'CheminApplication()' utilisant l'objet 'CurrentProject' et sa méthode

'Path', fonction stockée dans un module VBA (Module accessible par ALT+F11).

Affectation '='

Null signifie VIDE

Page 96: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 96

En plus, on pourra Copier-Coller les 2 lignes de la macro et attacher une nouvelle macro [Incorporée] à

l'évènement 'Sur sortie' du contrôle 'NomPhotoRep' pour que suite à la validationpar la touche Entrée de la saisie manuelle du nom du fichier (donc en sortant du contrôle), l'image soitréaffichée immédiatement (sans attendre l'évènement Sur activation du formulaire).

Les limitations de cette version2 sont :- Les noms des images doivent être saisis manuellement au clavier dans le contrôle du formulaire.- Il ne faut pas faire d'erreur de saisie pour que :

la correspondance NomImage du contrôle NomFichierImage soit parfaite…!

On peut lever les 2 contraintes ci-dessus par l'utilisation de la version3 ci-dessous mais c'est un peu pluscompliqué à générer…

Résumé Graphique de cette version 2 :

Table Représentant

Formulaire Représentant

Macro (incorporée)

Condition d'affichage :Si [NomPhotoRep] est pas VIDE alorsAffecter l'image du champ [NomPhotoRep]

SinonAffecter l'image particulière BLANK.jpg

Nom : NomPhotoSource : NomPhotoRep

Nom : ImgPhotoRepImage : (aucune !)

Image : C:\MesDocuments\Access\images\DupondAlain.jpg

Type de contrôle :Zone de texte

Type de contrôle :Image

CheminApplication() "\images\" [NomPhotoRep]ImgPhotoRep.Image & &=

Saisirdans

Logique :

Technique :

C:\MesDocuments\Access

"Affecter"

Fin TD8

Page 97: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 97

3. Images et Table : Version 3 basée sur Champ Texteet Procédure-VBA d'affectation

En TD, vous ne gérerez pas cette version 3 mais vous avez les explications si besoin.

Exemple : Formulaire Client et photo en version3. Il s'agit encore de gérer une imagechangeant à chaque enregistrement d'un formulaire.Le principe est le même que celui de la version2, on stocke toujours lesimages à l'extérieur de l'application Access dans un dossier nommé'images' situé sous le dossier 'Access' contenant l'application 'Facxxa2007.accdb'.

L'objectif est ici :- de ne plus avoir à saisir manuellement au clavier le nom de l'image

dans un contrôle 'NomPhoto' de type texte.- mais de choisir à la souris un fichier de NOTRE dossier 'images'

Les Ajouts, Modifications et Suppressions sont automatisés via 2 boutons.

Le contrôle peut ne plus être affiché car ni salecture, ni son écriture manuelle ne sont nécessaires.L'ajout / Modification, via le bouton, ouvre la fenêtre suivante qui :

affecte automatiquement le nomexact du fichier choisi au champ'NomPhoto' de la table Client.

Cette fenêtre, qui est la caractéristiqueprincipale de cette Version3, est baséesur l'environnement de programmationVBA suivant :Le module

faitréférence à une ressource de Windows(Définition de la Boite de dialogueOuvrir un fichier dans un fichier .dll) etdéfinit la fonction Function OuvrirUnFichier (…) qui sera appelée dans le module du formulaire Client

par la procédure suivante :

Private Sub BtAjoutModif_Click() associée au Clic du bouton

La logique de traitement, hors fenêtre ci-dessus, est ma même que celle de la version2 mais ici elle esttraitée en VBA avec gestion des erreurs…

ATTENTION : La programmation utilisée nécessite un paramétrage particulier d'Access au niveau del'éditeur VBA.

Vous devez ouvrir l'éditeur VBA (ALT+F11), menu OUTILS > Références… et disposer (au moins)des Références ci-dessous :

PUISSE.jpg

Page 98: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 98

Si besoin, complétez vos références…

Voir le code VBA commenté sur le fichier.accdb pour explications complémentaires :Exemple de code commenté pour ajouter ou modifier l'image.

Private Sub BtAjoutModif_Click()Dim NomFichier As String

' Gestion des erreursOn Error GoTo Catch01

' récupérer le chemin physique de la photo' par la boite de dialogue OuvrirUnFichier définie dans le module 'BoiteDialogueOuvrirFichierImage'NomFichier = OuvrirUnFichier(Me.Hwnd, "Sélectionner une photo :", 2)'Explication des paramètres

'Handle = le handle de la fenêtre (Me.Hwnd)'Titre = Titre de la boîte de dialogue'TypeRetour (Définit la valeur, de type String, renvoyée par la fonction)

'1 = Chemin complet + Nom du fichier'2 = Nom fichier seulement

' si la boite renvoie un nom de fichier non nulIf Len(NomFichier) > 0 Then

' pour TypeRetour = 1 (Chemin complet + Nom du fichier)'ranger le chemin + nom du fichier dans le controle imgPhoto pour afficher la photo'Me.imgPhoto.Picture = NomFichier

' pour TypeRetour = 2 (Nom fichier seulement)'ranger le chemin + nom du fichier dans le controle imgPhoto pour afficher la photoMe.ImgPhoto.Picture = CurrentProject.Path & "\images\" & NomFichier

' affecter au controle NomPhoto (version 1 : Chemin complet + Nom du fichier)' affecter au controle NomPhoto (version 2 : Nom du fichier)Me.NomPhoto = NomFichier

End If

RedimentionnerPhotoExit Sub…

Si vous souhaitez utiliser ce principe, vous pouvez simplement copier le code depuisle fichier Fac14a2007.accdb de correction et le coller dans votre application sansmaitriser ce code en gardant dans votre application le contrôle Image nomméImgPhoto et en gardant le dossier Images.

Page 99: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 99

4. Résumé :Saisir, Stocker, Modifier et Supprimerdes images dans des enregistrements de Table.Le fichier Fac14a2007.accdb présente les 3 solutions pour gérer des images-enregistrement.

1) Images et Table : Version1 basée sur Champ OLETable Produit et ses champs:

Formulaire Produit :

2) Images et Table : Version 2 basée sur Champ Texte et Macro d'affectationTable Représentant et ses champs :

3) Images et Table : Version 3 basée sur Champ Texte et Procédure-VBA d'affectationTable Client et photo en version3 et ses champs:

Macro [Incorporée]

VBA

Simple sans programmation

Pas Performant avec :-taille importante de .accdb-saisie par Coller (pas deinsérer un ficher.)

Programmation avec VBA et Boite d'Ouverture de fichier de WINDOWS intégrée en VBA.Performant : - taille réduite .accdb , - saisie assistée par Boite d'Ouverture de fichier et-chemin pour dossier 'images' automatique (pas stocké dans champ 'NomPhoto')

Programmation avec1 Macro de 2 lignes

(donc simple)

Pas Performant avecsaisie clavier du nomdu fichier

Performant avec :-taille réduite de .accdb- chemin pour dossier'images' automatique

Saisie àla souris

Saisieau clavier

Page 100: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 100

Ch19. Les tables avec champs à longueurvariable

Utiliser le fichier Fac14a2007.accdb pour la suite

1. Champ de type Mémo Dans la table Client, ajouter un Champ Commentaire de type Mémo.

Le type Mémo est une variante étendue du type Texte. Sa taille s'adaptedynamiquement à son contenu et Access ajoute la possibilité de mettre enforme ce texte (gras, italique, couleurs, …) par la Propriété Format dutexte : Texte enrichi.On peut saisir dans le champ de la table directement ou saisir dans une fenêtre spécifique accessible parMAJ+F2 pour bénéficier d'un bouton Police… permettant les enrichissements de : Police, Taille, Style(gras, italique, souligné) et Couleur du texte.

Dans le formulaire Client, en mode Création, cliquer Ajouter des champs existants puis glisserle champ Commentaire sur le formulaire. Un contrôlede type 'Zone de texte' (de longueur infinie) est ajouté.La source du contrôle est le champ Commentaire de latable.

On peut saisir dans le contrôle du formulaire directement (et mettre en forme en sélectionnant du texte puis endéplaçant la souris vers le haut, une barre d'outils flottante apparait) ou saisir dans une fenêtre spécifique accessiblepar MAJ+F2 pour bénéficier d'un bouton Police… permettant les enrichissements de : Police, Taille,Style (gras, italique, souligné) et Couleur du texte.

2. Champ de type Pièce jointe Dans la table Client, ajouter un Champ Fichiers joints de type Pièce

jointe.Le type Pièce jointe est une nouveauté Access. Ce type de champ peut stockerdes documents de types divers (Word, Excel, Image, Pdf, …). Il améliore letype Objet OLE vu au Chapitre précédent avec plusieurs améliorations : unseul champ peut contenir PLUSIEURS fichiers et un environnement estproposé à l'utilisateur pour gérer de manière interactive ces documents(choisir, ajouter, supprimer, ouvrir, enregistrer sous).Cependant, les fichiers joints sont réellement incorporés dans le fichier .accdb ce qui peut poser desproblèmes de taille du fichier qui augmente rapidement.

Dans le formulaire Client, en mode Création, cliquer Ajouter des champsexistants puis glisser le champ Fichiers joints sur le formulaire. Un contrôle detype 'Pièce jointe' est ajouté. La source du contrôle est le champ Fichiers joints dela table.

La propriété de formatage Afficher en tant que : Image/Icône permet l'affichage dufichier si possible (par exemple pour une image).On peut saisir dans le contrôle par double clic puis AjouterOn peut aussi ouvrir un document non directementaffichable (fichier pdf ci-dessous).

Page 101: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 101

3. Champ avec plusieurs valeursLes Clients parlent plusieurs langues et les Langues sont parlées par plusieurs Clients, gérer cet aspect.

Voir la table Langue(donnée dans le fichier Fac14a2007.accdb)avec Nom Langue : Indexé SANS Doublon

Dans la table Client, ajouter le Champ Ref Langue (le type serait Numérique en théorie pour êtrecompatible avec le Num Langue de la table Langue) mais on sélectionne ici directement le typeAssistant liste de choix… pour gérer le type (qui sera Numérique) et la manière de saisir par listedéroulante avec plusieurs valeurs.

Étapes de l'assistant :Je veux que la liste recherche (des données) dans une table ou requête SuivantTable Langue Suivant>> pour choisir tous les champs (Num Langue, Nom Langue) de la table Langue SuivantNom Langue (le nom du champ de la table Langue) pour critère de tri pour avoir une liste triée SuivantGarder la colonne Nom Langue comme visualisée avec la clé primaire (Num langue) cachée Suivant

Liste des langues comme étiquette du contrôle et cocher Terminé

Message Valider OUI.

Le champ créé par l'assistant est Numérique :Noter que le nom de champ que nous avions donné Ref Langue a disparu au profit de Liste des languesqui était simplement annoncé plus haut comme étiquette de contrôle.

Les propriétés de ce champ Liste de langues, générées par les étapes de l'assistant ci-dessus sont :

La propriété Autoriser plusieurs valeur est une nouveauté Access.Ce champ peut donc stocker plusieurs noms de langues.

Il se pose en concurrent de la démarche Classique consistant à dire :Un Client parle N Langues.Une Langue est parlée par N Clients

Donc à gérer une table intermédiaire de croisement (solution classique que nousverrons plus loin sur cet exemple des langues à titre de comparaison)

- Voir et modifier les relationscréées automatiquement :

Double cliquer sur la relation de gauchepour la modifier et activer l'intégritéréférentielle ce qui donne la présentationde la relation de droite. (1 et ∞apparaissent seulement quandl'Intégrité référentielle est activée).

La saisie est faite par Liste déroulanteC'est la 1° colonne déroulant (Num Langue= numérique) qui est affectéeau champ courant Liste de langues qui est lui aussi Numérique.

La 1° colonne (Num Langue) est masquée (0cm), seule la 2° colonne(Nom Langue) est montrée (2,54 cm).

Cette liste déroulante peut stocker plusieurs valeurs !

Page 102: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 102

Dans le formulaire Client, en mode Création, cliquer Ajouter des champsexistants puis glisser le champ Liste des langues sur le formulaire. Uncontrôle de type Liste déroulante' est ajouté.

Comme on le voit ici en mode Affichage, il permet la multi sélections ce qui estune nouveauté d'Access. Ce type de contrôle (Liste déroulante) a été défini dansles propriétés ci-dessus du champ Liste de langues.La source du contrôle est le champ Liste des langues de la table.

Remarque : un champ multi valeurs est HORS NORME des bases de donnéesRelationnelles. Ici, Access innove pour simplifier certains développementssimples mais est moins performant dans certains cas que la démanche classique ci-dessous.

Nous allons voir la solution classique pour comparer et avoir des critères de choix entre ces 2 démarches.

A. Démarche Classique Relationnelle

La table Langue est déjà créée.

Le formulaire Langue est déjà crée.

Pour gérer Les Clients parlent plusieurs langues et les Langues sont parlées par plusieurs Clients, onveut créer la table intermédiaire entre Client et Langue et y gérer la propriété Niveau pour connaitre,par Client et par Langue, le niveau pratiqué.

Rappel de 2 cas de relation N / N :Une Commande vend plusieurs Produits.

Un Produit est vendu dans plusieurs Commandes.Un Produit est fourni par plusieurs Fournisseurs.

Un Fournisseur fournit plusieurs Produits.

On souhaite que la saisie du niveau soit faite dans une liste de niveaux de référence.

Créer une table Niveau

Créer un formulaire Niveau(menu Créer>Plus de formulaire> Assistant>Table Niveau …)

N N

Page 103: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 103

Créer la table intermédiaire pour lecroisement des Clients et des Langues.

Voir la clé primaire compositeC'est seulement le coupleRef Client – Ref Langue qui doit être sansdoublon donc clé primaire.

Gérer les propriétés de Choix des 3 champs :

1) Propriétés de Ref Langue pour saisie par liste déroulante.

Le réel champ Ref Langue… sans sa Légende : Langue.La réelle valeur stockée … sans la 2° colonne Nom Langue affichée.

2) Propriétés de Ref Client pour saisie par liste déroulante.

Dans la requête pour Contenu, c'est [Nom] & " " & [Prénom] qui affiche DUMANS Benoit.

La clé primaire est basée sur les 2 champs clé étrangère.

3) Propriétés de Ref Niveau pour saisie par liste déroulante.

La 1° colonne est affectée à Ref Languemais elle est masquée (0cm)donc c'est la 2° colonne qui est affichéedans Ref Langue.

La 1° colonne est affectée à Ref Niveaumais elle est masquée (0cm)donc c'est la 2° colonne qui est affichéedans Ref Niveau.

La 1° colonne est affectée à Ref Clientmais elle est masquée (0cm)donc c'est la 2° colonne qui est affichéedans Ref Client.

Ref Langue estremplacé par lalégende Langue pourles affichages

Page 104: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 104

Tirer les Relations :

Créer le formulaire ci-dessous en mode assistant avec :- la table Client et son Num Client, Nom et Prénom pour simplifier- la table ClientLangue avec tous ses champs sauf Ref Client (inutile comme pour tout les sousformulaires de pointer vers le formulaire principal)- valider l'affichage avec sous–formulaire qui a été détecté d'après les Relations entre les tables.- disposition Tabulaire (Tabulaire pour les sous formulaire, c'est souvent le mieux !)- style à choisir (Access )- enregistrer Client et ses langues FP et Client et ses langues SF.

Comparaison entre la solution Table intermédiaire ClientLangue et Champ Multi-valeurs.1) Champ Multi-valeurs :- SIMPLE à générer : un champ- LIMITE dans la longueur de la liste des Langues lorsque la liste n'est pas déroulée,

- PEU de place prise dans le formulaire :- PAS de valeur comme le Niveau dépendant du Client et de la Langue (grosse limite).- Langue et ses Clients (voir page suivante) : Bien en consultation, MAL en saisie (grosse limite).2) Table intermédiaire ClientLangue :- COMPLEXE à générer : une table à 2 champs minimum : Ref Client et Ref Langue avec Liste déroulante- PAS DE LIMITE dans la longueur de la liste des Langues car Sous-formulaire,

- BEAUCOUP de place prise sur le formulaire :- POSSIBLE valeur comme le Niveau dépendant du Client et de la Langue.

Bilan : Multi-valeur plus simple MAIS moins bien que Table intermédiaire à privilégier.

Nous avons présenté ci-dessus un Client et ses Langues…

Page 105: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 105

On peut aussi présenter Une Langue et ses Clients.1) Version Champ Multi valeurs :

2) Version Table intermédiaire :

4. Formulaire basé sur un modèle de formulaireA. Créer un modèle de formulaireOuvrir le formulaire X Formulaire modèle de forme. Ce formulaire a été créé pour définir un modèle deformulaire au niveau de la forme (Police, Couleur, Bordure) pour appliquer une charte graphique à desformulaires existants ou à de nouveaux formulaires. Passer en mode Création. Eventuellement, modifierla couleur de fond de l'en-tête du formulaire et autres …Ce formulaire étant défini, le transformer en "Modèle de référence" pour de futurs formulaires :Menu Organiser > Mise en forme automatique > Assistant format automatique > Options >Personnaliser > Créer un nouveau format et le nommer 'A mon modèle personnel'.

B. Créer un formulaire basé sur un 'modèle' de formulaireCréer avec l'assistant un formulaire basé sur la tableProduit puis au niveau de l'étape de l'assistant "Quel stylechoisir", sélectionner 'A mon modèle personnel '

Pour appliquer le style à un formulaire existant, ouvrir un formulaire un mode création, ne passélectionner un élément du formulaire puis Menu Organiser> Mise en forme automatique> Assistantformat automatique et choisir 'A mon modèle personnel'.

En plus :Le formulaire X Formulaire modèle de formeTabulaire à été créé comme base pour Créer unnouveau format (procédure ci-dessus A.) et lenommer 'A mon modèle personnel Tabulaire'. Il gèreune présentation Tabulaire à appliquer à unformulaire principal Tabulaire ou pour les sous-formulaires qui sont Tabulaires.

Bien en Consultation.Mauvais en Ajout

Page 106: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 106

Ch20. Les Modes d'utilisation del'application

Utiliser le fichier Fac15a2007.accdb pour la suite

1. Mode Utilisateur : configuration du démarrage1) Options de démarrage

Si l'application est terminée et que l'on doive la confier à un utilisateur débutant, il faut paramétrercertaines options comme ci-dessous par le Bouton Office (Fichier en V 2010) > Options> Base dedonnées active pour verrouiller l'application dans la seule UTILISATION sans possibilité de passer enmode CREATION :

- pas de touches spéciales (comme F7 pour activer le volet de gauche)- pas de mode Page- pas de modification de structure des tables- pas de volet de navigation à gauche- pas de menu complet- pas de menu contextuel

Désactiver les options ci-dessous cerclées

Fermer la fenêtre puis fermer l'application.

Page 107: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 107

2) Activer les options de démarrageRedémarrer l'application pour que ces options prennent effet.

Vous êtes maintenant en mode Utilisateur seulement (pas développeur).Impossible de passer en mode Création sur un formulaire par exemple.

3) Désactiver les options de démarragePour passer outre ces options de démarrage et que le développeur que vous êtes puisse à nouveaumodifier l'application, maintenez enfoncé la touche MAJ pendant que vous ouvrez l'application.

Vous êtes maintenant en mode DEVELOPPEUR complet (pas simple utilisateur).

Ce verrouillage est donc facilement contournable pour qui connaît l'astuce de la touche MAJ .On peut annuler l'effet de la touche MAJ pour réellement contrôler l'ouverture de l'application. Il fautdans ce cas programmer un peu de VBA dans des Modules … (hors cadre de ce cours)

Utiliser le fichier Fac15a2007 1 Utilisateur .accdb pour tester le travail ci-dessus

2. Mode Partage de données entre plusieursutilisateurs en réseau local

Ouvrir Fac15a2007.accdb si vous disposez d'une application installée sur un

disque réseau partagé pour utiliser l'application

en mode PARTAGE de Donnéespour plusieurs utilisateurs (car sur disque-réseau partagé)

TESTER à plusieurs si possible…

Page 108: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 108

Ch21. Les Macros avancéesUtiliser le fichier Fac16a2007 .accdb pour la suite

Un Groupe de macros = une ou plusieurs Macros rassembléesUne Macro = une ou plusieurs Actions décrivant la macroUne Action = un ou plusieurs Arguments précisant l'actionUn Argument = une caractéristique de l’action

1. Tester les évènements déclanchant des macros dansun formulaire

Depuis le menu de l'application, cliquer le bouton Produits TEST évènements pour visualiserl'enchaînement des évènements se réalisant sur l'élément [Formulaire] et sur le contrôle zone de texte[Désignation]. Penser à cliquer sur Désignation.

Consulter dans le formulaire Produit TEST EVENEMENTS en mode création les propriétésd'évènement du Formulaire et de la Désignation pour comprendre le mécanisme.Consulter depuis l'onglet Macros le groupe de macros AAGroupeMacro Evenement Produit dans lequelsont stockées toutes les macros utilisant l'Action BoîteMsg.

Voici ci-dessous les événements disponibles pour ces 2 éléments.

.

Groupe de macros

Argument

ActionMacro

Page 109: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 109

2. Macro conditionnelle attachée à un événementObjectif :

Vérifier avant d’enregistrer un enregistrement via le formulaire Client,que le Code Postal n’est pas vide (Null).Logique de programme ci-dessous :

Si le contrôle Code Postal est vide (Null) alors1) Alerter l’utilisateurpar BoîteMessage.

2) Atteindre le contrôle Code Postal pour proposer à l’utilisateur de le saisir car c’est cecontrôle qui génère le problème.

3) Annuler l’Evénement qui aurait permis la Modification du Formulaire (Mise A Jour) parpassage par exemple à l’enregistrement précédent ou suivant par les boutons du bas duformulaire.

4) Arrêter Toutes les Macros qui auraient permis la Modification du Formulaire (Mise A Jour)comme la macro de Recherche d'un client par Liste déroulante

Sinon1) Prévenir l’utilisateur par BoîteMessage que le Client est validé.

(Message normalement inutile)

Faire un 'Bip' sonore de manière inconditionnelle (BIP normalement inutile mais ici pour aspect technique)

Procédure en Version 2007:1) Créer la Macro

Puis par le bouton Conditions, ajouter la colonne ConditionCondition Action Arguments de l’action

(utiliser le générateur d’expression)

[Formulaires]![Client]![Code Postal] Est Null

BoîteMessage Message : Vous avezoublié le Code Postal du client

Bip : OuiType : StopTitre : Pas si vite

… AtteindreContrôle Nom du contrôle :Code Postal

... AnnulerEvénement

... ArrêtToutesMacros

PasEstNull ([Formulaires]![Client]![Code Postal] )

BoîteMessage Message : Ce client est validé

Bip

Pas : inverse la condition (sinon) :

... signifie 'même condition que la ligne précédente' de la colonne Condition

Pas decondition

'Est' est un opérateur (comme =)'Null' est une constante (Vide)

Autre solution basée sur fonction :EstNull ([Formulaires]![Client]![Code Postal] ) retourne Vrai ou Faux

EstNull( ) estune fonction

Bip est exécuté de manière NONConditionnelle donc Toujours exécuté

Page 110: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 110

Pour information : comparaison Algorithmique et ACCESSActions Conditionnelles

Algorithmique Classique Solution dans ACCESSSi [Code Postal] = Vide alors

BoîteMessageAtteindreContrôleAnnulerEvènement

SinonBoîteMessage

FinSi

Bip

Si [Code Postal] Est Vide alors BoîteMessage… alors AtteindreContrôle… alors AnnulerEvènement

Si [Code Postal] Est Pas Vide alors BoîteMessage

Bip

Enregistrer la macro sous le nom :Formulaire Client, Formulaire, Saisie obligatoire Code Postal

(Nom du formulaire,Nom de l’élément du formulaire,Nom du Traitement) est la règle pournommer les Macros

Procédure en Version 2010:1) Créer la Macro

Puis via l'interface, obtenir ce résultat :

Commentaire

Page 111: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 111

2) Attacher cette macro dans le Formulaire 'Client' à l’élément Formulaire (afficher la fenêtre'Propriétés' puis sélectionner le Formulaire) :

- par le carré gris (à l'intersection des 2 règles graduées)

- par liste déroulante de la feuille de propriétéspuis choisir l'événement 'Avant MAJ' ( Avant Mise à Jour du formulaire donc de l'enregistrementcorrespondant)AvantMAJ signifie avant que les Données du formulaire soient enregistrées dans la table sur disque.

3) Tester cette macro.- En ajoutant un nouveau client sans Code Postal mais avec un Nom et un Prénom puis tenter de passerau client précédent par les boutons de navigation en bas de Formulaire.- En se positionnant sur un client existant, en supprimant le Code Postal puis tenter de changer de clientpar la liste déroulante de recherche.

3. Référence des Actions des MacrosLe tableau suivant regroupe les principales actions par catégories, en fonction de leur utilisation.

Le nom entre parenthèses est le nom anglais de l'action pour utilisation dans VBA (Visual Basic pourApplications) et pour rechercher dans l'AIDE (qui ignore les noms français).

Les noms de certaines actions sont légèrement différents entre les versions 2007 et 2010:Exemple : BoiteMsg est devenu ZoneMessage, Agrandir est devenu AgrandirFenêtre

Les actions soulignées ci-dessous ont été vues précédemment.Catégorie Description ActionDonnées dans lesformulaires et lesétats

Restreindre les données AppliquerFiltre (ApplyFilter)

Se déplacer dans lesdonnées

TrouverSuivant (FindNext),TrouverEnregistrement (FindRecord),AtteindreContrôle (GoToControl),AtteindrePage (GoToPage),AtteindreEnregistrement (GoToRecord)

Exécution Exécuter une commande ExécuterCommande (simuler les menus)Enregistrer

Exécuter une macro, uneprocédure ou une requête

OuvrirRequête (OpenQuery),ExécuterCode (RunCode),ExécuterMacro (RunMacro),SurErreur (OnError)ExécuterSQL (RunSQL)

Exécuter une application ExécuterApplication (RunApp)Arrêter l'exécution AnnulerEvénement (CancelEvent),

Quitter (Quit),ArrêtToutesMacros (StopAllMacros),ArrêtMacro (StopMacro)

Importer/exporter

Envoyer des objetsMicrosoft Access àd'autres applications

CopierVers (OutputTo),EnvoyerObjet (SendObject)

Transférer des donnéesentre Microsoft Access etd'autres formats de

TransférerBase (TransferDatabase),TransférerBaseDeDonneesSQL (TransferDatabase),TransférerFeuilleCalcul (TransferSpreadsheet),TransférerTexte (TransferText)

Page 112: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 112

donnéesManipulationd'objets

Copier ou renommer unobjet

CopierObjet (CopyObject),Renommer (Rename)

Supprimer un objet SupprimerObjet (DeleteObject)Déplacer ouredimensionner unefenêtre

Agrandir (Maximize),Réduire (Minimize),DéplacerDimensionner (MoveSize),Restaurer (Restore)

Ouvrir ou fermer un objetbase de données

Fermer (Close),OuvrirFormulaire (OpenForm),OuvrirModule (OpenModule),OuvrirRequête (OpenQuery),OuvrirEtat (OpenReport),OuvrirTable (OpenTable)

Imprimer un objet base dedonnées

OuvrirFormulaire (OpenForm),OuvrirRequête (OpenQuery),OuvrirEtat (OpenReport),Imprimer (Print)

Sélectionner un objetbase de données

SélectionnerObjet (SelectObject)

Définir la valeur d'unchamp, d'un contrôle oud'une propriété

DéfinirValeur (SetValue)

TRES PUISSANTDéfinir et supprimer desvariables mémoire

DéfinirVarTempSupprimerVarTemp

Mettre à jour les donnéesou l'écran

RedessinerObjet (RepaintObject),Actualiser (Requery),AfficherTousEnreg (ShowAllRecords)

Divers Afficher des informationsà l'écran

Echo (Echo),Sablier (Hourglass),BoîteMessage (MsgBox),Avertissements (SetWarnings)

Générer des frappes detouches

EnvoiTouches (SendKeys)

Afficher ou masquer labarre d'outils

AfficherBarreOutils (ShowToolbar)

Emettre une tonalité Bip (Beep)

Il y a des ACTIONS de Macros, elles doivent être la base de votre programmation sivous n'utilisez pas la programmation en langage VBA.

PUISSANT

Page 113: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 113

Ch22. Modification des données des tablesLes données des tables peuvent être modifiées manuellement ou automatiquement.

1. Modification manuelleCette modification est faite de manière interactive par l'utilisateur : ouvrir le formulaire Client, sepositionner sur le client DURAND Alain :

- soit par les boutons standards en bas de formulaire- soit par notre liste déroulante de recherche

Saisir 92000 pour modifier le Code Postal du client courant.

Une fois tapé 92000, dans la marge de gauche, indique 'en cours de saisie' donc 92000 non encoretransféré vers la table source du formulaire. On peut abandonner cette saisie par la touche ESC.

Pour valider la saisie, plusieurs solutions :- Access enregistre automatiquement les données au fur et à mesure de la saisie d'un enregistrementvalidé. Pour valider un enregistrement, il suffit de le quitter par :

- passer au suivant par exemple,- rechercher un autre client par la liste déroulante ou- fermer le formulaire.

- On peut aussi Enregistrer manuellement et immédiatement l'enregistrement (avant de le quitter) par le

bouton du menu Accueil ce qui transforme en .

On n'utilise généralement pas ce bouton car tout marche très bien en automatique.

Page 114: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 114

2. Modification automatique par RequêtePour les Requêtes, nous avons vu :

En Initiation 1) requête Sélection (plusieurs tables, tri, calcul, sélection sur critère)

Nous allons voir :En Perfectionnement 2) requête Action sur une table

3) requête Action Paramétrée par formulaire

A. La requête actionBut : Modifier les prix des seuls produits de marque CANON en les multipliant par 2.Le numéro de ces produits commence par CAN.Créer une requête en mode Création sur la seule table Produit avec 2 champs :

- Num produit et Prix HT avec CAN* comme critères pour Num produitExécuter la requête puis retour en mode CréationConvertir la requête en requête Mise à jour par le bouton Mise à jour de la zone Type de requête.

Dans la nouvelle ligne ‘Mise à jour’, inscrire dans le champ Prix HT en utilisant le bouton ‘Générateur’

de la barre d’outils et en choisissant dans le générateur: Tables; Produit; Prix HT :[Produit]![Prix HT] * 2

Enregistrer : R Action Mise à jour Prix et fermer cette requête.

Consulter dans la table Produit les prix des produits CANON.Ouvrir la requête (double-clic sur son nom) pour exécuter la mise à jour des prix (aucun effet àl’écran sauf éventuellement une alerte mais effet de modification des données sur la table)Vérifier les modifications des prix des produits CANON dans la table Produit.

Commentaires : cette requête nous a appris les bases d'une requête Mise à Jour sur une sélection maiscette requête est peu intéressante car trop spécialisée : sélection figée sur des produits CANON,MAJ exceptionnelle en multipliant le prix par 2 !

Nous souhaitons créer une requête de portée plus générale, dont les critères (sélection de produits, typede mise à jour) seront choisis par l'utilisateur de l'application via un formulaire et non pas saisis demanière figée par le développeur comme ci-dessus.

Remarque : de manière similaire à la requête action de type Mise à jour, il existe la requête de typeAjout et Suppression d'enregistrement (voir dans le menu Créer en Création de requêtes).

Page 115: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 115

B. La requête action paramétrée par formulaire

But : permettre la MAJ des prix d’une manière quelconque sur unecatégorie quelconque de produits : Donc, Paramétrer par saisie dans un formulaire

1) Créer le formulaire de saisie des paramètres

En mode Création (sans assistant), pas de table ou requête pour alimenter en données.

Remarque: un contrôle Zone de texte affiche Indépendant (en mode création) tant que sa propriétéSource contrôle n'est pas définie (par un champ de table ou de requête ou bien par une définition decalcul).

Gérer les propriétés des 2 contrôles Zone de texte comme ci-dessus.

Conséquence ici pour ces 2 contrôles : A l'ouverture du formulaire: la zone est vide (car sans source)

Après la saisie : seul le contrôle à l’écran est rempli (pas de répercussion de cette saisie dans unetable : Normal on saisit des critères de mise à jour que l'on ne souhaite pas enregistrer)

Enregistrer le formulaire : Saisie variation des prix v1 (saisir précisément ce nom)

Saisir (en mode Affichage) :

LOG dans Choix Marque (pour les produits de marque LOGitech comme LOG001 ou LOG002) et- 10% dans Choix Coef (pour réduire les prix de 10%) et penser à valider la saisie par ENTREE.

NE PAS fermer ce formulairecar ses données doivent être utilisées

pour une requête de mise à jour.

Gérer la requête de la page suivante...

En Mode Affichage

Page 116: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 116

2) Créer la requête paramétrée par le formulaireBut : pour cette requête, on veut que les 2 critères de Mise à jour et de Recherche soient déterminés parles valeurs saisies dans les 2 contrôles du formulaire précédent encore ouvert.

Créer une nouvelle requête en mode Création avec la TABLE Produit , transformer la requête Sélectionen requête Mise à jour par le bouton Mise à jour.

Champ Num produit Prix HTTable Produit ProduitMise à jour [Produit]![Prix HT]

* ( 1 +[Formulaires]![Saisie variation des prix v1]![Choix Coef] )

Critères Comme ( [Formulaires]![Saisie variation des prix v1]![Choix Marque] & "*" )

Enregistrer la requête: R Action Mise à jour Prix Paramétrée.Ne pas fermer la requête.

Consulter les prix des produits dans la table Produit.

Fermer la table produit.

Exécuter la requête par le bouton exécuter (et non par qui affiche seulement la Sélection).La requête utilise les valeurs saisies dans le formulaire "Saisie variation des prix v1".Remarque : pas d’écho à l’écran de l’opération mais effet sur disque consultable depuis la Table Produit.

Fermer la requête de mise à jour, le formulaire des paramètres et la table Produit.

Remarque : on peut améliorer la saisie par une liste déroulante présentant les 3 lettres des marques prisesdans Num Produit : la liste est basée sur une requête basée sur la table produit avec une colonne :

Voir correction du formulaire Saisie variation des prix V2 etde la requête R Action Mise à jour Prix paramétrée V2.On peut aussi améliorer en posant un bouton qui lancera depuis le

formulaire la requête de mise à jour.

ATTENTION : PAS d'espace avant * : * signifie "n'importe quelle chaine"L'opérateur & permet de juxtaposer (concaténer) plusieurs éléments.

Permet d'extraire deNum Produit

3 caractères à partir dela gauche

Permet de ne garderqu'un seul nom de

marque

Page 117: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 117

3. Modification automatique par MacroObjectif : Mises à jour du Stock de Produit depuis la saisie de produits vendus dans la Facture.Le résultat de cet objectif n'est pas visible car le traitement est effectué sur le champ de la TableProduit qui n'est pas affiché dans le formulaire.

Utiliser le fichier Fac17a2007 .accdb pour la suite

Mise à Jour du stock par DéfinirVarTemp et DéfinirValeur de macro.

A. Mise à jour Automatique Invisible du stock de Produit surévénement Saisie de la Quantité commandée

Table Produit:- Ajouter un champ : Qté stock de type Numérique, Réel double etavec la légende Quantité en stock- Créer une requête de Mise à jour avec Qté stock = 100 unités et l'exécuter

par pour saisir pour tous les Produits une Qté stock pour la future Mise àJour (MAJ) du stock de produit lors de la facture. Voir résultats dans Table Produit.

Table CommandeLigneProduit:- Modification du champ Quantité (Quantité commandée dans la facture) Valeur par défaut : 0.Valide si : >=0 , Message si erreur : SVP >=0 ,Null interdit : OUI (pour saisie obligatoire)

Formulaire Factures et ses produits FP:

Ouvrir ce Formulaire en modification pour accéder au Contrôle de type SF puis accéder auFormulaire de type sous-formulaire Factures et ses produits SF. (Voir démonstration par l'enseignant)Accéder par la propriété Source du Formulaire (et par ... en fin de ligne) à la requête R26 Facture détailet y ajouter la colonne Qté stock (pour que cette dernière puisse être MAJ par la future macro) puisrefermer cette requête.

Ne pas Fermer ce Formulaire (SF)

Contrôle de type SFContrôle de type Zone de texte

Formulairede type FP

Requêtesource du

Formulaire

Formulairesource du

contrôle de typeSF

Page 118: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 118

Utilisation de l’Action DéfinirVarTemp : Définir la valeurd'une variable mémoire .

Action Équivalente à l'affectation : Variable = Expression

La variable est persistante et continue d'exister après la fin de la macro où elle est crée.Elle est donc GLOBALE à l'application Access (utilisable partout).Le nombre de variables est limité à 255.L'action SupprimerVarTemp détruit la variable.La variable de macro est une nouveauté de la version d'Access.

La mise à jour de la quantité en stock est définie par :Qté stock = Qté stock (champ) – Quantité (nouvelle valeur du contrôle Quantité du formulaire)+ Quantité (valeur existante avant la saisie de la nouvelle valeur du contrôle Quantité si mise à jour)

Il faut donc garder la valeur du contrôle quantité avant la nouvelle saisie lorsque l'on modifie laquantité existante 4 par la nouvelle valeur 5 : Qté stock = 100 – 5 (saisie) + 4 (avant saisie)Nous allons utiliser les Variables (mémoire) et l'action DéfinirVarTemp qui permet d'affecter ( = )une valeur à une variable : QteEnEntrant = 4 (lire QteEnEntrant reçoit 4 par exemple)

1) Macro Sur Entrée dans contrôle QuantitéObjectif : Garder la quantité du contrôle qui existe en entrant dans le contrôle pour la MAJ stock future.Procédure : Depuis les propriétés du contrôle Quantité, évènement Sur Entrée, … Générateur demacros puis cliquer sur le bouton Afficher toutes actions et définir la macro suivante :

Action : DéfinirVarTemp (c'est l'action d'affectation Élément reçoit (=) Expression)Elément : QteEnEntrant (le nom de la variable mémoire est librement choisi)Expression : … (utiliser le générateur d'expression pour obtenir la ligne ci-dessous)

[Formulaires]![Facture et ses produits FP]![Facture et ses produits SF].[Formulaire]![Quantité]

Action : Bip (pour se rendre compte que la macro s'exécute si le haut parleur est actif)

Action : BoiteMessage (ZoneMessage en V 2010)Message : ="Valeur en entrant : " & [VarTemp]![QteEnEntrant]Titre : Mouchard

La future MAJ du stock sera :stock = stock - nouvelle valeur saisie dans le contrôle Quantité + QteEnEntrant de la variable

En Testseulement

Page 119: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 119

Utilisation de l’Action DéfinirValeur : Définir la valeur d'un Élément :un champ de table, ou un contrôle de formulaire ou état ou une propriété de contrôle

Action Équivalente à l'affectation : Elément = Expression

2) Macro Sur Sortie du contrôle QuantitéDepuis les propriétés du contrôle Quantité, évènement Sur Sortie, … Générateur de macros puiscliquer sur le bouton Afficher toutes actions :Action : DéfinirValeurElément : [Qté stock] (Commentaire : [Qté stock] est le Champ de la table Produit)Expression : [Qté stock] - [Quantité] + [VarTemp]![QteEnEntrant]

Action : Bip (En test pour se rendre compte que la macro s'exécute si le haut parleur est actif)

Action : BoiteMessage (ZoneMessage en V 2010)Message : ="Reste en stock maintenant : " & [Qté stock]Titre : Gestion de STOCKDeux macros incorporées ont donc été créé :

- Tester la procédure de mise à jour du stock dans la facture puis- Vérifier le résultat directement dans la Table Produit (en fermant si ouverte) en ouvrant cette table.

En plus, s'il vous reste du temps, pour tester l'affectation à une propriété de contrôle :

Contrôle : Quantité Evènement : Sur Réception FocusAction : BoiteMessage (ZoneMessage en V 2010)Message : Prix Invisible ensuite !Titre : Evènement : Sur Réception Focus

Action : DéfinirValeurElément : [Prix Ht].[Visible]Expression : Non

Contrôle : Quantité Evènement : Sur Perte FocusAction : BoiteMessage (ZoneMessage en V 2010)Message : Prix Visible ensuite !Titre : Evènement : Sur Perte Focus

Action : DéfinirValeurElément : [Prix Ht].[Visible]Expression : Oui

Tout ceci offre de larges possibilités de traitements …

Voir le fichier Fac18a2007 .accdb pour la correction.

Pour faire référence à la Variable mémoire, ilfaut la préfixer par [VarTemp]!

Ici, adresse IMPLICITE pour le Contrôle(le contrôle est dans le Formulaire courant)

Page 120: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 120

Ch23. Traitements de synthèse1. Formulaire Tableau Croisé Dynamique (TCD)Objectif : Calculer la Moyenne des Quantités de produit vendues par Client et par Catégorie.

A. Créer la requête source du futur formulaire

Exécuter la requête :

Enregistrer : R28 Produits vendus pour analyse TCD

Futur Regroupement deslignes par TCD :-pour Durand et-pour Imprimante7 + 1 + 3+ 6 = 17Moyenne :17 / 4 = 4.25

Page 121: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 121

B. Créer le formulaire TCD basé sur la requêteSélectionner la requête R28 Produits vendus pour analyse TCDMenu Créer / Plus de formulaire / Tableau Croisé DynamiqueUn tableau croisé dynamique vide est proposé avec 4 zones :- champ de critère de regroupement en colonne- champ de critère de regroupement en ligne- champ de critère de filtrage (sélection) en haut- champ de zone de calculs au centre

Si la fenêtre de la Liste des champs ci-dessous n'est pas affichée,cliquer sur Liste des champs dans le ruban.

A l'aide de la souris, glisser depuis la fenêtre Liste des champs :-le champ Nom vers la zone Champ de ligne-le champ Nom catégorie vers la zone Champ de colonne-le champ Quantité vers la zone centrale de calcul "Placer les totaux"

Pour l'instant, nous n'obtenons aucun calcul desynthèse mais seulement la ventilation (la liste)des quantités de produit commandé :- par Nom de client et- par Nom de Catégorie.

Cliquer sur le champ Quantitépuis sur l'icone de calcul automatiquedu ruban et choisir : Moyenne

Une nouvelle présentation est proposée:Nous avons :- la moyenne des quantités de produitsvendus par client et par catégorie

- la moyenne des quantités de produitsvendus par client (toutes catégoriesconfondues)

- la moyenne des quantités de produitsvendus par catégorie (tous clientsconfondus)

- la moyenne générale des quantités deproduits vendus (tous clients et toutescatégories confondus)

Page 122: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 122

On peut cacher la liste des Quantités vendues par Client et par Catégorie :Cliquer dans le tableau sur le champ Quantité puis sur le bouton du ruban :Masquer les détails

On peut gérer le format numérique des valeurs affichées:Cliquer dans le tableau sur le champ Moyenne de Quantité puis sur le bouton du ruban :Feuille des propriétés Onglet Format / Nombre : Standard (pour 2 décimales)

Résultat final :

Enregistrer ce formulaire : Ventes analysées par TCD

Page 123: Polycop td access 2007  facturation

- ACCESS 2007 – 2010 - Travail dirigé Facturation –

Ensat - Informatique Appliquée - Marc Souques Page 123

Ch24. La base de données finale.