You are on page 1of 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

livres
1 ISBN

Editeurs
IdEditeur
Nom

Villes
CodePostal
Ville

Titre
Lieu Pub
IdEditeur
Date Pub
PrixHT
Pages
Quantit en stock

Dtails commande

NumCommande
ISBN
QuantitCommande

Clients
IdClient
Nom
Prnom
Rue
Code Postal

- 1 / 29 -

commandes
NumCommande
Mode de paiement
Date commande
NumClient

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 lIdClient 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

20) Essayez avec la commande suivante :


Mode de paiement
Date commande
3 (carte bleue)
date actuelle
Que se passe-t-il ? Pourquoi ?

NumClient
190

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

Chane vide autorise

Non

Non

Non

Oui

Oui

Non

Oui

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

33) Enregistrez-la sous le nom cliNPdC et excutez-la : cliquez sur le bouton


les rsultats en mode Feuille de donnes.

Semestre 1

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.

38) Cliquez sur le bouton

pour visualiser la conception de la requte :

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 -

You might also like