Vous êtes sur la page 1sur 29

Master ANI et TCI premire anne

anne 2005/2006 semestre 1

Gestion des bases de donnes (2e partie)


Ce polycopi est destin prsenter Access comme exemple de SGBD. Avant de commencer construire une base de donnes sous Access, il est indispensable davoir cr le modle logique des donnes (MLD) expliqu dans le polycopi prcdent. Lexemple qui servira de support de cours la prsentation dAccess est le dernier exercice dapplication du prcdent polycopi (cration du MCD et du MLD) : Une librairie veut informatiser sa gestion. Elle a des clients dans diffrentes villes qui lui passent des commandes. Une commande peut comporter plusieurs livres diffrents. Un livre est crit par un ou plusieurs auteurs et est dit par un diteur. Pour mmoire, le MLD que nous avions construit est le suivant :
isbn nauteur ISBN

NumAuteur
auteurs NumAuteur Nom Prnom Anne de naissance Anne du dcs
1

livres
1 ISBN 1

Editeurs IdEditeur Nom


1

Titre Lieu Pub IdEditeur Date Pub PrixHT Pages Quantit en stock

Dtails commande

NumCommande ISBN QuantitCommande

Villes CodePostal Ville


1

Clients IdClient Nom Prnom Rue Code Postal


1

commandes NumCommande Mode de paiement Date commande NumClient


1

- 1 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

I. Prsentation des principaux objets dAccess


Une base de donnes sous Access peut comprendre des tables (avec des relations entre ces tables), des requtes, des formulaires, des tats, des pages, des macros et des modules. Dans ce cours ne seront prsentes que les tables et les requtes. Les formulaires et les tats (plus les menus qui sont des formulaires particuliers) seront prsents au semestre 2. On peut reprsenter ces diffrents objets de la faon suivante :
partie visible par lutilisateur final

Formulaire menu

Formulaire 1

tat 1

Formulaire 2

tat 2

Requte slection 4 Requte slection 1 Requte slection 2 Requte slection 3 Requte action

Table A Cl primaire A Champ 1 Champ 2 .

Table B Cl primaire B Champ 1 Champ 2

Table C Cl primaire C Champ 1 Champ 2 .

Table D Cl primaire D Champ 1 Champ 2 .

Un exemple de base de donnes livr avec Access va nous permettre de mieux comprendre le rle de ces diffrents lments. Lancez Access et appelez la commande Exemples de bases de donnes Exemple de base de donnes les comptoirs dans le menu ? (Aide). Aprs un formulaire dintroduction (qui peut tre dsactiv), vous arrivez au menu suivant (un menu est un type de formulaire particulier) :

- 2 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

1) Cliquez sur le bouton Produits. Le formulaire suivant apparat :

outils de navigation

En bas de cette fentre, les flches et permettent de parcourir la liste des produits (utilisez pour accder directement au dernier et pour revenir au tout premier). On peut aussi accder un enregistrement en entrant son numro dans la case. Le bouton permet de crer un nouvel enregistrement (rfrencer un nouveau produit). Le bouton Aperu de la liste des produits permet dafficher ltat Liste alphabtique des produits : un catalogue des produits rfrencs par lentreprise Les comptoirs. 2) Revenez au menu et cliquez sur le bouton Catgories. Ce bouton permet daccder au formulaire Catgories, qui contient le sous-formulaire Liste des produits :

sous-formulaire Liste des produits

Parcourez la liste des catgories et, pour chacune, visualisez la liste des produits correspondants. 3) Revenez au menu et cliquez sur le bouton Fournisseurs. Ce bouton permet daccder au formulaire Fournisseurs. Utilisez ce formulaire pour parcourir la liste des fournisseurs. En bas du formulaire, le bouton Visualisation produits permet dafficher la liste des produits du fournisseur ; le bouton Ajouter produits sert afficher le formulaire Produits de faon ajouter un nouveau produit li ce fournisseur.

- 3 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Utilisez ce formulaire pour ajouter un nouveau produit (Jeanlain catgorie : Boissons) vendu par la socit Aux joyeux ecclsiastiques. Compltez la fiche votre gr. Vrifier dans Fournisseurs et Catgories que le nouveau produit a t pris en compte 4) Revenez au menu et cliquez sur le bouton Commandes :

sous-formulaire commandes

Ajoutez une nouvelle commande (clic sur le bouton ) passe par le client Blondel pre et fils, suivie par Nancy Davolio et livre par United. Essayez dy mettre deux fois le mme produit (Jeanlain par exemple). Un message derreur apparat. Pourquoi ? Finissez de saisir la commande mais ne cliquez pas sur Imprimer facture. 5) Revenez au menu et choisissez Imprimer des rapports de vente. Affichez les aperus suivants : ventes par reprsentant et par pays pour le premier trimestre 1997 ; totaux des ventes classs par montant ; statistiques de ventes pour les catgories Desserts et Produits laitiers. Comme vous pouvez le constater lutilisateur de la base de donnes naccde via le menu qu des formulaires et des tats. Fermez le menu (en cliquant sur le bouton Afficher la fentre Base de donnes) et examinez la structure des tables de cette base :

- 4 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Pour afficher la liste des tables, cliquez sur le bouton correspondant gauche de cette fentre. Vous pouvez afficher le contenu dune table en double-cliquant sur son nom dans la liste. La commande Outils Relations (ou le bouton de la barre doutils Base de donnes) vous permet de visualiser le modle logique de donnes de lapplication :

6) Examinez les tables Produits, Commandes et Dtails commandes et vrifiez que les ajouts que vous avez introduits avec les diffrents formulaires sont prsents dans les tables. Avant de passer la deuxime partie, fermez lapplication les comptoirs

- 5 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

II. Tables et relations


Nous allons maintenant crer les huit tables et les relations du modle logique de donnes de lapplication librairies. Pour commencer il faut crer lapplication Librairie en appelant la commande Fichier Nouvelle base de donnes Choisissez loption Crer base de donnes vide. Vous indiquerez le nom (Librairie_votre nom_votre prnom.mdb) du fichier et lemplacement o vous voulez lenregistrer avant de cliquer sur le bouton Crer. Attention ! la diffrence des autres applications Microsoft, il ne vous sera pas possible de renregistrer la base de donnes directement sous un autre nom et/ou un autre emplacement par la commande Fichier Enregistrer sous. Le format de fichier par dfaut est le format Access 2000 qui est compatible aussi bien avec Microsoft Access 2000 quavec Access 2002 (XP). Vous pouvez modifier ce format par dfaut (fermez toutes les bases de donnes et appelez la commande Outils Options puis cliquez sur longlet Avanc ; dans la liste Format de fichier par dfaut, slectionnez Access 2002). Notez cependant quun fichier au format Access 2002 ne peut tre ouvert que dans Access 2002. Il est possible de crer les tables soit en dfinissant la structure puis en saisissant des donnes, soit en important directement des donnes provenant de listes de donnes enregistres dans des feuilles Excel. 1. Cration de tables partir de listes de donnes Excel Afin de limiter des saisies fastidieuses nous allons utiliser la deuxime mthode pour crer les six premires tables de lapplication. Les donnes se trouvent dans les deux classeurs Excel nomms Bases Clients.xls et Bases Livres.xls qui se trouvent sur le serveur dans le dossier Sujets/master1 ANI+TCI et que vous copierez sur votre ordinateur. 7) Importez la liste des clients depuis Excel : Appelez la commande Fichier Donnes externes Importer Noubliez pas de spcifier Microsoft Excel comme Type de fichier puis allez lemplacement o vous avez copi le fichier Base Clients.xls. Slectionnez-le et cliquez sur Importer :

Il est possible dimporter une feuille (Afficher les feuilles de donnes) ou une plage de cellules nomme (Afficher les plages nommes). Choisissez la premire option et slectionnez la feuille Clients puis cliquez sur Suivant. Activez loption Premire ligne contient les en-ttes de colonnes puis cliquez sur Suivant. Choisissez loption Dans une nouvelle table puis cliquez sur Suivant :
- 6 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Vous pouvez modifier certaines proprits des champs de la table (nom, type de donnes), prciser ceux qui doivent tre indexs et ventuellement en exclure certains. Cliquez sur Suivant. Les index Un index permet Microsoft Access de rechercher et de trier plus rapidement des enregistrements. On peut crer des index bass sur un seul ou sur plusieurs champs (jusqu 10). Il est conseill dindexer les champs vrifiant les conditions suivantes : les donnes sont de type Texte, Numrique, Montaire ou Date/Heure ; vous avez lintention de rechercher des valeurs stockes dans le champ ; vous souhaitez trier les valeurs du champ ; le champ est destin prendre de nombreuses valeurs diffrentes. La cl primaire dune table est indexe automatiquement.

Prciserez que la cl primaire est le champ IdClient puis cliquez sur Suivant. la dernire tape de lassistant, donnez un nom la table (vous accepterez le nom propos : Clients).

8) Importez de faon identique la liste des villes qui se trouve dans le fichier Base Clients.xls.

- 7 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

9) Vous disposez maintenant de deux tables dont vous pouvez examiner la structure avec le bouton (affichage en mode Cration) et dont vous pouvez visualiser, modifier et / ou complter les donnes avec le bouton (affichage en mode Feuille de donnes) :

10) Crez la relation entre les deux tables : dans le menu Outils, choisissez la commande Relations (ou cliquez sur le bouton de la barre doutils Base de donnes) :

Slectionnez les deux tables Clients et Villes (touche Ctrl ou Maj) et cliquez sur Ajouter. Pour crer la relation entre les tables cliquez sur le champ Code Postal de la table Villes et faites glisser jusqu CodePostal de la table Clients :

- 8 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Cochez les trois cases puis cliquez sur le bouton Crer. Lintgrit rfrentielle Lintgrit rfrentielle est un systme de rgles que Microsoft Access utilise pour garantir que les relations entre les enregistrements dans les tables lies sont valides et que vous ne supprimez ou ne modifiez pas accidentellement des donnes lies. Pour mettre en uvre lintgrit rfrentielle, il faut que les trois conditions suivantes soient runies : le champ li de la table primaire est une cl primaire ou a un index unique ; les champs lis ont le mme type de donnes (exceptions : un champ NumroAuto peut tre li un champ Numrique de type Entier long, un champ NumroAuto de type N de rplication peut tre li un champ Numrique de type N de rplication) ; les deux tables appartiennent la mme base de donnes Access. Lorsque lintgrit rfrentielle est applique, les rgles suivantes sappliquent : On ne peut pas entrer dans le champ cl trangre une valeur qui nexisterait pas dans la cl primaire de la table primaire. Toutefois, on peut entrer une valeur Null dans la cl trangre pour indiquer que les enregistrements ne sont pas lis. Par exemple, une commande ne peut pas tre attribue un client inexistant, mais elle peut ntre affecte personne en entrant une valeur de type Null dans le champ Numclient. On ne peut pas effacer un enregistrement de la table primaire si des enregistrements correspondants existent dans une table lie. Par exemple, on ne peut pas effacer une personne de la table Clients sil existe des commandes rattaches cette personne dans la table Commande. On ne peut pas modifier une valeur de la cl primaire dans la table primaire si cet enregistrement a des enregistrements lis. Par exemple, il est impossible de modifier l IdClient dun client qui aurait dj pass des commandes. Mises jour et suppressions en cascade Lorsque vous appliquez lintgrit rfrentielle une relation, vous pouvez spcifier si vous voulez quAccess mette jour ou supprime en cascade automatiquement des enregistrements lis. Si vous activez ces options, les oprations de suppression et de mise jour qui sont normalement interdites par les rgles dintgrit rfrentielle sont alors autorise, Access effectuant les modifications ncessaires dans les tables lies afin de maintenir lintgrit rfrentielle : Mettre jour en cascade les champs correspondants : si vous modifiez la cl primaire dun enregistrement de la table primaire (par exemple lIdClient dun client), Access met automatiquement jour le champ correspondant dans tous les enregistrements lis (le champ NumClient de ses commandes) afin que la relation ne soit pas rompue. Remarque : si la cl primaire dans la table source est un champ NumroAuto, il est inutile dactiver cette option car on ne peut pas changer manuellement les valeurs de ce type de champ. Effacer en cascade les enregistrements correspondants : si vous supprimez un enregistrement de la table source, Access supprimera automatiquement tous les enregistrements de la table cible. Par exemple, si vous effacez un client de la table Clients, toutes ses commandes seront automatiquement supprimes de la table Commandes (ainsi que les enregistrements correspondants dans la table Dtails commandes). 11) Ouvrez la table Clients et essayez dajouter un nouveau client dont le numro est 190. Que se passe-t-il ? Pourquoi ? 12) Essayez dajouter un nouveau client dont le numro est 206 et dont le code postal est 54000 (Nancy). Que se passe-t-il ? Pourquoi ? Comment rgler ce problme ?

- 9 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

13) Importez les feuilles livres, auteurs, ISBN Nauteur (pas de cl primaire) et editeurs qui se trouvent dans le fichier Base Livres.xls. 14) Modifiez la table ISBN Nauteur en dfinissant les deux champs comme cl primaire. 15) Dans la table livres, changez le type de donnes du champ PrixHT de numrique montaire, format Euro, avec 2 dcimales : slectionnez la table et cliquez sur le bouton :

Cliquez dans la colonne Types de donnes droite du nom du champ et slectionnez le type voulu dans la liste droulante. En bas de la fentre, longlet Gnral, slectionnez le format et le nombre de dcimales. 16) Crez les relations entre les tables (en appliquant lintgrit rfrentielle). 2. Cration de tables ex-nihilo Nous allons maintenant voir comment crer ex-nihilo une table dans Access, en nous appuyant sur lexemple de la table commandes. 17) Cliquez sur le bouton , slectionnez Mode cration et crez la structure de la table commandes qui comprend les quatre champs suivants : NumCommande : type de donnes NumroAuto. Dclarez ce champ comme cl primaire (cliquez avec le bouton droit de la souris gauche du nom du champ et choisissez Cl primaire dans le menu contextuel la valeur de lattribut Index devient Oui sans doublons). Mode de paiement : choisissez comme type de donnes Assistant liste de choix. la premire tape de lassistant, activez loption Je taperai les valeurs souhaites et cliquez sur Suivant. ltape suivante, choisissez 2 colonnes et saisissez les 3 lignes suivantes :

- 10 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Cliquez sur Suivant et choisissez Col1 comme champ stocker. la dernire tape, conservez Mode de paiement comme tiquette et validez en cliquant sur Terminer. Observez le rsultat dans longlet Liste de choix. Date commande : type de donnes Date/Heure, format Date, abrg, valeur par dfaut : Date() (cest la fonction qui renvoie la date systme). NumClient : type de donnes Numrique, taille Entier long.

18) Crez la relation avec la table Clients. 19) Saisissez les quelques enregistrements suivants : Mode de paiement 2 (chque) 1 (espces) 3 (carte bleue) Date commande date actuelle date actuelle 22/10/2005 NumClient 11 23 53 NumClient 190

20) Essayez avec la commande suivante : Mode de paiement Date commande 3 (carte bleue) date actuelle Que se passe-t-il ? Pourquoi ?

Il existe une autre faon de procder, qui permet dviter de saisir une commande correspondant un client inexistant : 21) Supprimez tous les enregistrements de la table commandes (ouvrez-la en mode Feuille de donnes, slectionnez tous les enregistrements Ctrl+A et appuyez sur Suppr) et la relation entre les tables Clients et commandes (affichez la fentre Relations, cliquez avec le bouton droit sur la relation entre les deux tables et choisissez Supprimer dans le menu contextuel). 22) Ouvrez la table commandes en mode Cration et recrez le champ NumClient en utilisant lassistant liste de choix : la premire tape, choisissez loption Je veux que la liste de choix recherche les valeurs dans une table ou requte. ltape suivante, choisissez la table Clients et cliquez sur Suivant :

- 11 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Slectionnez les trois premiers champs (pour ajouter un champ cliquez sur son nom dans la colonne Champs disponibles puis sur le bouton > pour supprimer un champ, cliquez sur son nom dans la colonne Champs slectionns puis sur <) et cliquez sur Suivant. ltape suivante, dcochez loption Colonne cl cache et cliquez sur Suivant. La valeur stocker est IdClient. Conservez NumClient comme tiquette et cliquez sur Terminer. 23) Passez dans la fentre Relations, ajoutez la table commandes et modifiez les proprits de la relation. 24) Saisissez des commandes (une dizaine dont certaines par le mme client). Pour que les clients apparaissent dans lordre alphabtique, affichez la table commandes en mode Cration ( ). Slectionnez le champ Numclient et, dans longlet Liste de choix, cliquez sur la proprit Contenu. Un bouton apparat droite de celle-ci ; cliquez dessus :

Sur la ligne Tri, en dessous du champ Nom, ajoutez Croissant. Fermez cette fentre en enregistrant les modifications. Enregistrez la table puis passez en mode Feuille de donnes ( ). 25) Crez la table Dtails commandes avec les champs suivants : NumCommande : utilisez lassistant liste de choix, en indiquant que les donnes doivent provenir de la table commandes, et en affichant les trois champs NumCommande, DateCommande et NumClient. Dcochez loption Colonne cl cache. ISBN : assistant liste de choix. Les donnes sont issues de la table livres dont on affichera les champs ISBN, Titre et PrixHT. Dcochez loption Colonne cl cache. Vous afficherez les livres dans lordre alphabtique. QuantitCommande : type Numrique, taille Entier (pas long), valeur par dfaut : 1.

- 12 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Pour limiter les risques derreur de saisie, saisissez >= 1 (sans les guillemets) dans la proprit Valide si ; comme Message si erreur, entrez La quantit commande doit tre positive ! . 26) Dfinissez comme cl primaire la concatnation des deux premiers champs (slectionnez-les en faisant glisser le pointeur de la souris, bouton gauche enfonc, dans la marge gauche des deux noms de champs puis cliquez avec le bouton droit et choisissez Cl primaire). 27) Passez dans la fentre Relations, ajoutez la table Dtail commandes, et modifiez les proprits des relations avec les tables commandes et livres. 28) Entrez des enregistrements (commande avec plusieurs livres, livre faisant lobjet de plusieurs commandes diffrentes). 3. Les types de champs Les types de champ disponibles dans Microsoft Access sont les suivants : Texte : chanes quelconques. On peut aussi utiliser ce type de champ pour des nombres qui ne ncessitent aucun calcul (numros de tlphone, numros INSEE, codes postaux). Taille du champ : indiquez la longueur maximale autorise (de1 255 caractres). Mmo : utilisez ce type de champ pour de longues suites de caractres alphanumriques (jusqu 65536), telles que des notes ou des descriptions. Numrique : donnes numriques pouvant faire lobjet de calculs mathmatiques. La proprit Taille du champ peut prendre les valeurs suivantes : - Octet : nombres entiers compris entre 0 et 256. - Dcimal : nombres compris entre (10281) et 10281 avec jusqu 28 dcimales. - Entier : nombres entiers compris entre 32 768 et 32 767. - Entier long : nombres entiers compris entre 2 147 483 648 et +2 147 483 647. - Rel simple : nombres compris entre3,402823.1038 et 1,401298.1045 pour les valeurs ngatives et 1,401298.1045 et 3,402823.1038 pour les valeurs positives. - Rel double : nombres allant de -1,79769313486231.10308 -4,94065645841247.10324 pour les valeurs ngatives et de +4,94065645841247.10324 +1,79769313486231.10308 pour les valeurs positives. - N rplication : identifiant unique (GUID : squence de 32 chiffres hexadcimaux). Date/Heure : donnes de type dates et/ou heures. Montaire : stocke des valeurs de type montaire. Ce type de champ empche larrondi au chiffre suprieur lors des calculs. NumroAuto : numro squentiel (augmentant dune unit choisissez Incrment dans la proprit Nouvelles valeurs) ou alatoire (choisissez Alatoire) gnr automatiquement lors de lajout dun enregistrement. Oui/Non : pour les donnes qui ne peuvent prendre que deux valeurs, comme Oui/Non, Vrai/Faux ou Actif/Inactif ( choisir dans la liste Format). Les valeurs Null ne sont pas autorises. Objet OLE : ce type de champ permet de stocker des objets OLE (documents Word, classeurs Excel, images, sons). Lien hypertexte : utilisez ce type de champ pour les liens hypertexte (liens locaux ou Internet). Assistant Liste de choix : cet assistant sert crer un champ qui permet de choisir dans une liste droulante une valeur provenant dune autre table ou dune liste. Les proprits suivantes sont communes (presque) tous les types de champs : Null interdit : si cette proprit est fixe Oui, lutilisateur devra imprativement renseigner ce champ. Chane vide autorise (champs de type Texte et Mmo uniquement) : si cette proprit a la valeur Oui, lutilisateur peut saisir une chane vide (""), mme si les valeurs Null sont interdites.
- 13 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Quelle est la diffrence entre Null et une chane vide ? Une chane vide reprsente une information inexistante (par exemple le champ Adresse2 pour les clients qui ne sont pas concerns), Null une information qui existe peut-tre mais qui est inconnue. En rsum :
Null interdit Non Non Oui Oui Chane vide autorise Non Oui Non Oui Action de l'utilisateur Touche Entre Touche Espace Chane vide ("") Touche Entre Touche Espace Chane vide ("") Touche Entre Touche Espace Chane vide ("") Touche Entre Touche Espace Chane vide ("") Valeur enregistre Null Null (interdit) Null Null Chane vide (interdit) (interdit) (interdit) (interdit) Chane vide Chane vide

Lgende : texte qui remplace le nom du champ dans les colonnes des feuilles de donnes, les tiquettes des formulaires et des tats et pages d'accs aux donnes. Remarques : 1. Choisissez une Taille de champ la plus petite possible car les donnes de petite taille prennent moins de place en mmoire et sont traites plus rapidement. 2. On peut modifier la taille par dfaut des champs de type Texte et Numrique : Options Outils, onglet Tables/Requtes. 3. Si vous rduisez la taille dun champ qui contient dj des informations, vous risquez de perdre des donnes. Il devient impossible dannuler les changements apports aux donnes la suite dune modification de la proprit Taille du champ ds que celle-ci a enregistre.

- 14 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

III. Les requtes slection


Il existe deux grands types de requtes : les requtes slection et les requtes action, que nous aborderons au prochain semestre. Une requte slection rcupre des donnes contenues dans une ou plusieurs tables et affiche les rsultats sous la forme dune feuille de donnes dans laquelle il est possible de travailler comme dans une table, mme si, en ralit, les donnes se trouvent dans la (ou les) table(s) sur laquelle porte la requte. 1. Slectionner des donnes depuis une table unique Pour crer une nouvelle requte, revenez la fentre de base de donnes et slectionnez la catgorie Requtes :

Double-cliquez sur Crer une requte en mode cration :

- 15 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

La partie suprieure de cette fentre sert afficher la table ou les tables qui serviront de base la requte, avec leurs champs. Dans la partie infrieure, on trouve la grille QBE (Query By Example) qui va nous servir crer la requte. a. Critres et tri Notre objectif est de crer une requte (nomme cliNPdC) qui affiche les clients du Nord-Pasde-Calais tris par code postal, puis par nom. 29) Slectionnez la table Clients et cliquez sur Ajouter puis sur Fermer. 30) Slectionnez les champs qui devront intervenir dans la requte (pour nous, IdClient, Nom, Prnom et CodePostal). Pour ajouter un champ, il existe plusieurs mthodes : double-cliquez sur son nom ; faites-le glisser de la table vers lune des colonnes de la grille QBE. Le champ * reprsente lensemble des champs de la table. Pour supprimer un champ, slectionnez la colonne (un clic sur len-tte) et appuyez sur Suppr. Pour remplacer un champ dj insr dans la grille par un autre, cliquez sur son nom et slectionnez le nom du champ de remplacement dans la liste droulante. Loption afficher (active par dfaut), indique les champs qui seront affichs dans le rsultat de la requte. Pour masquer un champ, il suffit donc de dsactiver cette option. 31) Pour trier les enregistrements en fonction de la valeur dun champ, cliquez dans la ligne Tri en face de celui-ci et choisissez lordre (Croissant ou Dcroissant). Il est possible de trier en fonction de plusieurs champs. Dans ce cas, lordre des cls de tri est de gauche droite ; pour dplacer un champ, slectionnez la colonne (un clic sur son en-tte pointeur ) puis saisissez lentte de la colonne et faites-le glisser vers lemplacement qui vous convient. 32) Pour slectionner les clients du Nord-Pas-de-Calais (codes postaux commenant par 59 ou 62), cliquez dans la ligne Critres en dessous de CodePostal et saisissez 59* (sans les guillemets) puis 62* sur la ligne den dessous. Vous pouvez aussi saisir directement sur une seule ligne lexpression Comme "59*" Ou Comme "62*" . La requte termine devrait ressembler ceci :

- 16 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

33) Enregistrez-la sous le nom cliNPdC et excutez-la : cliquez sur le bouton les rsultats en mode Feuille de donnes.

pour visualiser

34) Crez une requte (que lon appellera liv50a100) qui extrait les livres dont le prix HT est compris entre 50 et 100 euros et les trie par prix dcroissant Dans la ligne Critres, entrez lexpression Entre 50 Et 100 ou >=50 Et <=100 (sans les guillemets). Oprateurs de comparaison Les oprateurs de comparaison utilisables dans un critre sont <, =, <>, > , <=, >= et Entre Et Oprateurs logiques Les principaux oprateurs logiques sont Et, Ou, Ou_X (Ou exclusif) et Pas (ngation par exemple le critre Pas Comme "59*" appliqu au champ CodePostal permet de trouver tous les clients qui nhabitent pas le Nord). Jokers Lastrisque (*) reprsente une chane de caractres quelconque, le point dinterrogation (?) un caractre quelconque et le dise (#) un chiffre quelconque. Critres portant sur des champs de type texte Pour rechercher une valeur particulire, saisissez-la (entre guillemets) ; ainsi le critre "Nord" appliqu au champ Dpartement permet de rechercher les clients du Nord. Appliqus un champ de type Texte, les oprateurs de comparaison portent sur lordre alphabtique ( > signifie vient aprs dans lordre alphabtique ). Ainsi le critre <"Dupont" appliqu au champ Nom de la table Clients permet de slectionner les clients dont le nom vient avant Dupont dans lordre alphabtique. Le mot-cl Comme permet de rechercher les valeurs dun champ qui correspondent au modle indiqu. Ainsi le critre Comme "S*" appliqu au champ Nom de la table Clients permet de slectionner les clients dont le nom commence par la lettre S tandis que Comme "[AD]*" permet de slectionner les clients dont le nom a pour premire lettre A, B, C ou D. Les fonctions Gauche(), Droite() et NbCar() fonctionnent comme sous Excel. Les listes La fonction In() permet de rechercher les valeurs dun champ qui appartiennent une srie donne. Ainsi le critre In("Nord";"Pas-de-Calais") appliqu au champ Dpartement permet de rechercher les clients du Nord-Pas-de-Calais. Les dates Dans un critre, les dates doivent tre encadres par des signes dise. Ainsi, le critre #02/11/2005# appliqu au champ DateCommande permet de rechercher les commandes passes le 2 novembre 2005. La fonction Date() renvoie la date systme (la date actuelle, avec mise jour). Les fonctions Anne(), Mois(), Jour(), Joursem() fonctionnent comme dans Excel. Valeur de champ vide (Null) Null dsigne un champ vide. Ainsi, le critre Est Null permettra de slectionner les enregistrements pour lesquels le champ slectionn na pas t renseign tandis que Est Pas Null permet de rechercher ceux pour lesquels le champ a t complt. ET ou OU ? Comme dans les filtres labors dExcel, des critres se trouvant sur la mme ligne sont relis par loprateur Et, tandis que des lignes diffrentes de la grille QBE, sont relies par Ou. b. Champ calcul Dans une requte, il est possible dajouter des champs calculs partir des champs existants. On peut saisir directement la formule mais le plus simple est dutiliser le gnrateur dexpression.
- 17 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

35) Crez une requte que vous enregistrerez sous le nom livresTTC qui comprend les champs calculs TVA (la TVA sur les livres est 5,5 %), que lon mettra au format montaire, et Prix TTC. - Dans la fentre de base de donnes, cliquez sur Crer une requte en mode cration. - Ajoutez la table livres puis tous ses champs (champ *) - Dans la premire ligne de la colonne suivante, saisissez lexpression suivante : TVA: [PrixHT]*0,055 (le nom du champ calcul suivi de : et de la formule de calcul) Les noms de champs intervenant dans le calcul doivent tre mis entre crochets. Si vous ne faites pas appel au gnrateur dexpression, attention aux fautes de frappe ! - Dans la premire ligne de la colonne suivante, saisissez lexpression suivante : PrixTTC: [PrixHT]+[TVA] (un champ calcul peut faire appel un autre champ calcul sil est affich) - Pour modifier le format de ces deux champs, cliquez sur ceux-ci avec le bouton droit et choisissez Proprits dans le menu contextuel :

En face de Format, choisissez Euro dans la liste droulante. La requte termine ressemblera ceci :

36) Crez une requte appele clients par zone qui comprend le champ calcul Zone qui rpartit les clients en trois zones : le Nord-Pas-de-Calais, la Rgion parisienne et le Reste de la France. On utilisera la fonction VraiFaux (quivalente de la fonction SI de Excel), la fonction Gauche et loprateur Ou. Vous trierez les clients par ordre alphabtique.

- 18 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Zone: VraiFaux(Gauche([Code Postal];1)="9" Ou Gauche([Code Postal];2)="75";"Rgion parisienne";VraiFaux(Gauche([Code Postal];2)="59" Ou Gauche([Code Postal];2)="62";"Nord-Pas-deCalais";"Reste de la France")) c. Requtes oprations Ces requtes, qui permettent deffectuer des oprations comme des comptages ou des calculs de somme ou de moyenne, sont appeles aussi requtes de synthse ou requtes de regroupement. 37) Crez une requte appele StatsLivParAnne qui pour chaque anne ddition des livres, permet de connatre le nombre de livre dits, le prix minimum, le prix maximum, le prix moyen. - Dans la fentre de base de donnes, cliquez sur Crer une requte laide de lassistant.

Choisissez la table livres, puis ajoutez les champs Datepub et PrixHT et cliquez sur Suivant. Cochez la case Synthse et cliquez sur le bouton Options de synthse pour cocher les cases correspondant ce que vous dsirez obtenir :

- 19 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Validez et cliquez sur Suivant. Donnez un nom la requte, choisissez Ouvrir la requte pour afficher les informations et cliquez sur Terminer. pour visualiser la conception de la requte :

38) Cliquez sur le bouton

Remarque : on peut modifier lintitul des champs. Par exemple, cliquez avec le bouton droit sur le champ Moyenne De PrixHT et choisissez Proprits dans le menu contextuel. Dans la case Lgende, entrez Prix moyen HT :

39) Nous allons refaire cette requte sans laide de lassistant (vous lenregistrerez sous le nom StatsLivParAnne2) : - Crez une nouvelle requte en mode cration. - Ajoutez la table livres. - Ajoutez le champ Date Pub et quatre fois le champ PrixTTC. - Cliquez sur le bouton (regroupement) de la barre doutils Base de donnes. - Dans la ligne Opration, laissez Regroupement en dessous du champ Date Pub, et choisissez Min, Max, Moyenne et Compte en dessous des quatre autres champs. - Visualisez la requte et enregistrez-la. - Rajoutez un champ calcul Ecart: [MaxDePrixHT]-[MinDePrixHT] et choisissez Expression dans la liste sur la ligne Oprations. - Visualisez la requte et enregistrez-la. - Nous souhaitons maintenant nous limiter aux livres publis aprs 1995. Pour cela, ajoutez un champ Date Pub ; entrez >1995 dans la ligne Critres et choisissez O dans la liste Opration. Il est inutile dafficher ce champ. La requte termine doit ressembler ceci :

- 20 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

40) Crez une requte nomme NbLivresParTranche permettant de connatre le nombre de livres par tranches de prix HT de 25 (tranche 1 : de 0 moins de 25 , tranche 2 : de 25 moins de 50) d. Requtes en cascade Au lieu de rechercher directement des donnes dans une table, une requte peut tre base sur une autre requte. Par exemple, nous souhaitons connatre le nombre de clients par zone : 41) Crez une nouvelle requte en mode Cration et affichez la requte clients par zone. Ajoutez les champs Zone et IdClient. Effectuez un regroupement sur le champ Zone et un comptage sur le champ IdClient. Noubliez pas de changer la lgende du champ IdClient en Nombre de clients. La requte complte doit ressembler ceci :

42) Enregistrez cette requte sous le nom NbCliParZone, et affichez les donnes. e. Requte pour trouver les doublons Nous souhaitons maintenant crer une requte appele VillesPlusieursClients qui nous permettra de connatre les villes o il y a plus dun client. 43) Cliquez sur le bouton . Choisissez lAssistant Requte trouver les doublons et cliquez sur OK. Les tapes de la construction de la requte sont les suivantes : (1) Choisissez la table Clients. (2) Indiquez Code Postal comme champ susceptible de contenir des doublons.

- 21 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

(3) Comme champs supplmentaires afficher, choisissez IdClient, Nom et Prnom. (4) Changez le nom de la requte (VillesPlusieursClients) et cliquez sur Terminer. 44) Passez en mode Cration et observez la conception de la requte :

45) Nous souhaitons maintenant connatre les villes o il y a plus de 10 clients. Ouvrez la requte VillesPlusieursClients en mode cration, remplacez 1 par 10. Appelez la commande Fichier Enregistrer sous et donnez comme nom VillesPlus10Clients. Excutez la requte. f. Requtes paramtres Une requte paramtre permet de saisir une (ou plusieurs) valeur(s) intervenant dans un ou plusieurs critres au moment de lexcution de la requte (et non lors de sa conception). 46) Nous souhaitons crer une requte (nomme LivresPrixMaxi) permettant dafficher la liste des livres dont le prix est infrieur une valeur X saisie par lutilisateur. En regard du champ PrixHT dans la ligne Critres, saisissez <[Prix maximum :] (sans les guillemets) :

Lors de lexcution de la requte, le texte plac entre crochets (attention ne pas utiliser un nom de champ existant dans la requte) saffiche dans une bote de dialogue qui invite lutilisateur saisir la valeur qui le remplacera lors de lexcution :

- 22 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

47) Crez une requte nomme LivresAnneX qui permet dextraire les livres dune anne spcifie par lutilisateur lors de lexcution de la requte. 48) Crez une requte nomme NbLivresParAnneDepuisX qui permet de connatre le nombre de livres par an, depuis une anne spcifie par lutilisateur lors de lexcution de la requte. 2. Slectionner des donnes depuis plusieurs tables Il est souvent ncessaire dextraire des donnes qui concernent plusieurs tables. On prendra soin de vrifier que les relations qui les unissent sont pertinentes par rapport la requte (il est possible dans la requte de supprimer certaines relations et den rajouter dautres). a. Slectionner des donnes Comme premier exemple de requte portant sur plusieurs tables, nous allons construire une requte appele Auteurs et ses Livres qui permet dafficher les auteurs avec les livres quils ont crits, tris par ordre alphabtique des auteurs :

49) Crez une nouvelle requte en mode cration et ajoutez les tables auteurs, isbn n auteur et livre. Insrez les champs Nom (avec tri croissant) et Prnom de la table auteurs ainsi que ISBN et Titre de la table livres. 50) Comme la liste est trs longue, nous allons permettre lutilisateur de saisir linitiale des auteurs afficher dans un champ calcul :

Remarque : on pouvait se passer du champ calcul en faisant porter comme critre sur le champ Nom : Comme [Premire lettre de l'auteur :] & "*" .

- 23 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

b.

Champs calculs portant sur plusieurs tables Dans une requte multitables, on peut insrer des champs calculs partir de champs issus de tables diffrentes qui sont en relation. 51) Dans un premier temps, nous allons crer une requte opration appele MontantDtailCommandes qui permet de connatre le montant TTC dune ligne dune commande : Crez une nouvelle requte en mode Cration et ajoutez les tables Dtails commandes et livres. Affichez les champs NumCommande, Quantit commande (de Dtails commande), ISBN et PrixHT (de livres) ainsi que le champ calcul suivant : MontantDtail:[Quantit commande]*[PrixHT]*1,055 Noubliez pas de mettre ce champ au format Euro. La requte termine doit ressembler ceci :

52) A partir de cette requte, nous allons crer une nouvelle requte MontantCommandes qui calcule le montant total de chaque commande. Crez une nouvelle requte en mode Cration et ajoutez la requte MontantDtailCommandes. Affichez les champs NumCommande et MontantDtail. Cliquez sur le bouton (regroupement) de la barre doutils Base de donnes et, dans la ligne Opration, choisissez Regroupement pour le champ NumCommande et Somme pour MontantDtail. Noubliez pas de mettre ce dernier champ au format Euro. La requte termine doit ressembler ceci :

Remarque : nous verrons au second semestre des solutions plus rapides pour obtenir ce rsultat dans les formulaires et les tats.

- 24 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

c.

Requte de non-correspondance Le but dune requte de non correspondance est de rechercher les enregistrements dune table de donnes source qui ne sont lis aucun enregistrement de la table de donnes cible. Par exemple, nous allons crer une requte nomme AuteursSansLivres qui permettra dafficher les auteurs nayant pas crit de livre. 53) Pour pouvoir tester cette requte, ajoutez les auteurs suivants dans la table auteurs :
NumAuteur 111 112 113 Nom Camus Pascal Sartre Prnom Albert Blaise Jean-Paul Anne de naissance 1913 1623 1905 Anne du dcs 1960 1662 1980

54) Nous allons crer cette requte laide de lAssistant Requte de non correspondance (cliquez sur le bouton de la fentre de base de donnes. Les tapes de lassistant sont les suivantes : (1) Slectionnez la table auteurs. (2) La table en relation est la table isbn - nauteur. (3) Les champs en relation sont les champs NumAuteur des deux tables. Slectionnez donc NumAuteur dans la table auteurs et NumAuteur dans isbn - nauteur puis cliquez sur le bouton <=>. (4) Indiquez que vous souhaitez afficher les champs NumAuteur, Nom et Prnom. (5) Nommez la requte AuteursSansLivres et cliquez sur Terminer pour afficher les rsultats. 55) Passez en mode Cration pour examiner la conception de la requte et notamment la proprit de la jointure (cliquez avec le bouton droit sur celle-ci et choisissez Proprits de la jointure dans le menu contextuel) :

56) Construisons maintenant sans lassistant une requte de mme nature qui sera nomme ClientsSansCommande pour connatre les clients qui nont jamais pass de commandes : - Crez une nouvelle requte en mode cration. - Ajoutez les deux tables Clients et Commandes.

- 25 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Insrez les champs IdClient, Nom, Prnom (de la table Clients) et NumClient (de la table Commandes). - Modifiez les proprits de la jointure (Inclure tous les enregistrements de la table 'Clients' et seulement ceux de la table 'Commandes' pour lesquels les champs joints sont gaux). - Ajoutez Est Null comme critre pour le champ NumClient (il est donc inutile dafficher ce champ !). La requte termine devra ressembler ceci :

3. Quelques requtes plus complexes a. Requtes avec paramtres facultatifs Si, lors de lexcution dune requte paramtre, lutilisateur ne saisit pas de valeur pour le paramtre, aucun enregistrement nest affich. Si lon souhaite au contraire que dans ce cas tous les enregistrements soient affichs, il faut prvoir de traiter les deux ventualits. 57) Nous allons nous appuyer sur lexemple de la requte LivresAnneX. Ouvrez-la en mode cration et enregistrez-en une copie sous le nom LivresAnneX2 puis modifiez-la comme suit :

- 26 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

Pour pouvoir distinguer si le critre [Anne d'dition] a t saisi ou pas, on ajoute un champ calcul qui se borne reprendre la valeur de ce paramtre : Expr1: [Anne d'dition :] . Il reste traiter les deux cas : - le critre a t saisi (nest pas Null) et alors la Date Pub des livres doit tre gale ce paramtre. - le critre na pas t saisi (il est Null) et alors aucun critre ne doit tre appliqu. Attention ! Il est recommand de faire des copier/coller pour respecter la syntaxe exacte du paramtre (en cas de faute de frappe, Access reconnatrait deux paramtres diffrents). 58) Crons maintenant une requte nomme LivresSelonPriode qui affiche les livres entre une anne X et une anne Y saisies par lutilisateur. Si celui-ci ne saisit pas lanne de dpart, on affichera tous les livres dits avant lanne Y ; sil ne saisit pas danne de fin, on affichera tous les livres publis aprs lanne X ; sil ne saisit aucun paramtre, on affichera tous les livres :

Avec deux paramtres facultatifs, le problme est un peu plus complexe puisquil faut distinguer entre quatre ventualits : - les deux paramtres ont t saisis : le critre est Entre [Aprs lanne :] Et [Avant lanne :] ; - seul [Aprs lanne :] a t saisi : le critre est >=[Aprs lanne :] ; - seul [Avant lanne :] a t saisi : le critre est <=[Avant lanne :] ; - aucun paramtre na t saisi : pas de restriction. b. Autres requtes complexes Nous souhaitons crer une requte qui affiche les autres clients habitant la mme ville (mme code postal) quun client dont le nom sera saisi par lutilisateur. Il faut procder en plusieurs tapes : (1) Crer une requte paramtre CodePostalClientX qui recherche le code postal du client dont le nom est entr par lutilisateur. (2) Crer une requte AutresClientsDeLaVilleDeX qui sappuiera sur la premire requte et la table clients. 59) Crez une nouvelle requte en mode cration et ajoutez la table Clients. Insrez les champs IdClient (ce champ nest pas indispensable ce niveau, mais il servira pour affiner la requte AutresClientsDeLaVilleDeX), Nom et Code Postal. Comme critre pour le champ Nom, entrez le paramtre suivant : [Entrez le nom du client :] (pour limiter le risque de doublons, vous pouvez entrer un deuxime critre paramtrique pour le champ Prnom). Enregistrez la requte sous le nom CodePostalClientX.
- 27 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

La requte termine doit ressembler ceci :

60) Crez une nouvelle requte en mode cration et ajoutez la table Clients et la requte CodePostalClientX. Insrez les champs IdClient, Nom, Prnom et Code Postal de la table Clients. La relation propose ne nous intresse pas. Supprimez-la et ajoutez une relation entre les deux champs Code Postal. Enregistrez la requte sous le nom AutresClientsDeLaVilleDeX. Vous pouvez la tester avec Sansonner (02000) ou avec Deulisse (59000) Remarque : si vous ne voulez pas que le client dont vous avez saisi le nom figure dans le rsultat de votre requte, ajoutez le critre <>[CodePostalClientX]![IdClient] pour le champ IdClient (utilisez le gnrateur dexpression pour viter les fautes de frappe) Dans cette requte, le champ IdClient intervient deux fois : dans la table Clients et dans la requte CodePostalClientX. Pour lever lambigut, il faut indiquer auquel des deux on fait rfrence. Ainsi [CodePostalClientX]![IdClient] ([nom de la table/requte]![nom du champ]) renvoie au champ IdClient de la requte CodePostalClientX. Si vous le souhaitez, vous pouvez aussi trier les clients par ordre alphabtique. La requte termine devrait ressembler ceci :

- 28 / 29 -

Master 1 ANI et TCI

Initiation Microsoft Access partie 2

Semestre 1

61) Autre exemple : nous souhaitons afficher les autres livres crits par le(s) auteur(s) dun livre dont le n ISBN est X (on pourra tester avec le livre dont le n ISBN est 2853944603) :

- 29 / 29 -