Vous êtes sur la page 1sur 17

Cours ACCESS

Les requtes

1. 2. 3.

Introduction .................................................................................................2 Cration d'une requte ..................................................................................2 Dfinition des critres de slection...................................................................5 3.1 Oprateurs .............................................................................................5 3.2 Les Fonctions ..........................................................................................6 3.3 Plusieurs critres portant sur des champs diffrents.......................................7 3.4 Requte paramtre ................................................................................8 Les requtes multitables ................................................................................9 Les fonctions de regroupement...................................................................... 10 5.1 Les oprations....................................................................................... 11 5.2 Quelques exemples ................................................................................ 12 Les requtes d'analyse croise ...................................................................... 13 Les 7.1 7.2 7.3 7.4 requtes ACTION................................................................................... 14 Les requtes Cration............................................................................. 14 Les requtes Ajout ................................................................................. 15 Les requtes Mise Jour......................................................................... 16 Les requtes Suppression........................................................................ 17

4. 5.

6. 7.

Page 1 sur 17

Cours ACCESS

Les requtes

LES REQUETES
1. Introduction
Les requtes vont servir afficher uniquement certaines donnes contenues dans les tables selon certains critres. Elles peuvent aussi faire des calculs sur vos donnes, ainsi que crer des sources de donnes pour les formulaires, les tats ou mme d'autres requtes (on peut faire une requte sur le rsultat d'une autre requte). Elles servent encore modifier des tables existantes ou en crer des nouvelles. Il existe diffrents types de requtes que nous allons dtailler aprs : ?? L a r e q u t e s l e c t i o n : C'est celle qu'on utilisera le plus souvent. Elle permet de slectionner des enregistrements, de faire des calculs et des regroupements. Elles ressemblent beaucoup aux filtres, mais permettent, en plus, de travailler sur plusieurs tables simultanment. ?? L a r e q u t e d ' A n a l y s e c r o i s e : Cette requte prsente ses rsultats sous forme de tableau (de type Excel). On l'utilisera pour comparer des valeurs, dgager des tendances. ?? L a r e q u t e d e C r a t i o n d e t a b l e : Cette requte cre une table partir des donnes qu'elle a extraites dans une ou plusieurs autres tables. ?? L a r e q u t e M i s e J o u r : Cette requte modifie le contenu d'un ou plusieurs champs d'une ou plusieurs tables. C'est le moyen le plus efficace pour mettre jour un grand nombre d'enregistrements en une seule opration. ?? L a r e q u t e A j o u t : Cette requte ajoute les donnes qu'elle a extraites la fin d'une table dj existante. ?? L a r e q u t e S u p p r e s s i o n : Cette requte supprime un ou plusieurs enregistrements dans une ou plusieurs tables. Les trois derniers types de requtes ne seront pas tudis : ?? La requte SQL direct ?? La requte de dfinition de donnes ?? La requte UNION

2. Cration d'une requte


Dans la fentre principale d'Access, cliquez sur l'onglet "Requtes", puis sur le bouton "Nouveau".

Page 2 sur 17

Cours ACCESS

Les requtes

Access nous propose 5 faons de crer une requte : ?? M o d e c r a t i o n : nous allons crer la requte de A Z par nous-mmes ?? A s s i s t a n t d e R e q u t e s i m p l e : Cre une requte simple sur une ou plusieurs tables, on pourra, dans cette requte simple, faire des calculs, des regroupements. ?? A s s i s t a n t d e R e q u t e d ' a n a l y s e c r o i s e : Aide la cration d'une requte d'analyse croise ?? A s s i s t a n t d e R e q u t e t r o u v e r l e s d o u b l o n s : Localise les enregistrements doublons dans une table ou une requte. ?? As s i s t a n t d e R e q u t e d e n o n -c o r r e s p o n d a n c e : Localise les enregistrements d'une table auxquels ne correspond aucun autre enregistrement d'une autre table. On peut, par exemple, utiliser un tel type de requte pour localiser les clients qui n'ont pas pass de commande.

Comme nous ne reculons pas devant l'effort, nous allons crer les requtes par nous mme, nous cliquons donc sur Mode Cration , puis, sur OK :

Access nous affiche la liste des tables de la base. Nous choisissons ici les tables sur lesquelles vont porter la requte. Nous allons prendre pour exemple la requte "liste des clients habitant la ville de Paris". La requte va donc porter sur la table " Clients ", on la slectionne, et on clique sur " Ajouter", comme il n'y a aucune autre table ajouter, on clique sur " Fermer". Notez qu'on peut aussi faire porter la requte sur le rsultat d'une autre requte, dans ce cas, on choisira la requte dans l'onglet "Requte".

Dans la partie suprieure de la fentre se trouvent la ou les tables avec la listes de leur champs, c'est sur ces tables que vont porter les requtes. Dans la partie infrieure, se trouve la description de la requte.

Page 3 sur 17

Cours ACCESS

Les requtes

Voici notre requte : Nous avons un tableau compos de colonnes et de lignes, dans chaque colonne, on indique les champs qui vont apparatre dans le rsultat de la requte ou qui vont servir dans la requte, ici on veut la liste des clients habitant Saint-Quentin, on veut donc voir apparatre le champ Nom et le champ Prnom, le critre de la requte va se faire sur le champ ville, on ajoute donc aussi ce champ. Pour ajouter un champ, on peut, soit le slectionner dans la table et l'amener avec la souris sur une colonne, soit on clique sur la ligne "Champ", la liste de tous les champs s'affiche alors et on en slectionne un dans la liste. Un des champs propos sappelle '*', ce champ signifie "tous les champs de la table", si on choisi ce champ, tous les champs de la table apparaitront dans le rsultat de la requte, en plus des autres champs que vous aurez choisis. La ligne "Table" sert selectionner la table laquelle appartient le champ slectionn, dans notre cas, il n'y a qu'une table, le choix est vite fait. La colonne "Tri" indique de quelle faon vont tre tris les champs dans le rsultat de la requte : il y a trois sortes de tri : Croissant (de A Z), Dcroissant (de Z A) et non tri. On a choisi ici de trier le rsultat de la requte par nom et par prnom de faon croissante. Le tri se fait toujours de gauche droite : le rsultat de la requte sera d'abord tri par nom, puis par prnom. La colonne "Afficher" indique si le champ doit tre affich ou non, ici on veut afficher le nom et le prnom de chaque client habitant Saint-Quentin, mais on a pas besoin d'afficher, pour chaque client, la ville dans laquelle il habite, puisqu'il s'agira toujours de Saint-Quentin, on a donc dselectionn l'affichage du champ " Ville". Enfin la colonne "Critres " va indiquer le critre de la requte, on veut la liste des clients habitant SainQuentin, le critre est donc : le champ ville doit tre gal Saint-Quentin, d'o le critre = "Saint-Quentin". Pour xecuter la requte, on clique sur l'icne :

Access affiche le rsultat :

Le rsultat de la requte s'affiche sous la forme d'une table que l'on peut modifier comme si il s'agissait d'une table normale, on peut ajouter des enregistrements, les modifier, faire des filtres, des tris, etc...

Page 4 sur 17

Cours ACCESS

Les requtes

Attention : Les rsultats des requtes, mme si ils sont prsents sous forme de tables ne sont pas de vritables tables quaurait gnr la requte. Ils ne sont qu'une "vue" faite partir des tables qui ont servi faire la requte. Autrement dit, si vous modifiez quelque chose dans le rsultat de la requte, la modification se repercutera dans la table qui a servi faire la requte, si on change ici le nom du client, la modification sera reporte dans la table Clients, si on ajoute un client au rsultat de la requte, un nouvel enregistrement va tre cre dans la table Clients, et en plus, cet enregistrement sera incomplt car seuls deux champs auront pu tre saisis dans le rsultat de la requte (les champs nom & prnom).

3. Dfinition des critres de slection


3.1 Oprateurs

On peut utiliser dans les requtes les oprateurs suivants : Oprateur = <> < > <= >= Signification Egal Diffrent Infrieur Suprieur Infrieur ou gal Suprieur ou gal

Access met notre disposition d'autres oprateurs : Oprat eur Entre Signification Slectionne les enregistrements pour lesquels la valeur d'un champ est comprise dans un intervalle de valeurs. Slectionne les enregistrements pour lesquels la valeur d'un champ est comprise dans une liste. Slectionne les enregistrements pour lesquels un champ est vide ou non Slectionne les enregistrements contenant une donne approximative. Slectionne les enregistrements ne correspondant pas au critre Exemple Entre "A" et "C" Entre 10 et 20 Entre #01/01/99# et #31/12/99# Dans ("Paris";"Saint-Quentin")

Dans Est Comme Pas

Est NULL Est pas NULL Comme "rue*" Pas Entre "A" et "C"

Page 5 sur 17

Cours ACCESS

Les requtes

3.2 Les Fonctions On peut intgrer des fonctions dans les critres de slection. Access met notre disposition un trs grand nombre de fonctions (pour en avoir la liste complte, consultez l'aide intgre Access). Ce sont les mmes fonctions que celles qui sont utiliss dans les contrles des formulaires (et dailleurs dans tous les logiciels de la gamme Microsoft Office). Par exemple, parmi ces fonctions, on trouve la fonction Mois ( ), qui on passe une date en paramtre, cette fonction renvoie le mois de cette date, par exemple Mois (#10/2/98#) renvoie 2. Une autre fonction, Date ( ) renvoie la date du jour. On peut utiliser ces deux fonctions dans des critres de slection : Par exemple, pour obtenir la liste des commandes du mois d'octobre :

Notez que pour faire rfrence au champ "Date de la commande" dans la fonction Mois ( ), on a crit le champ entre crochets [ ]. On utilise les crochets lorsquon travaille avec un champ dont le nom comporte des espaces. Par extension et par mesure de prcaution, on les utilisera avec tout type de champ.

Ou pour obtenir la liste des commandes passes il y a moins d'un mois :

Il existe un trs grand nombre de fonctions, pour en avoir la liste et la syntaxe, consultez l'aide intgre Access.

Page 6 sur 17

Cours ACCESS

Les requtes

3.3 Plusieurs critres portant sur des champs diffrents On peut avoir plusieurs critres de slection, ces critres tant spars entre eux par des OU ou des ET, par exemple : "liste des clients habitant Saint-Quentin OU Paris", " Liste des clients s'appelant Dupont ET vivant Paris". 1Liste des clients s'appelant Dupont et vivant Saint-Quentin

La requte ressemble la prcdente, sauf que l, il y a deux critres : le premier Nom = "Dupont" ET le deuxime Ville = "Paris". Vous noterez au passage qu'il n'est pas ncessaire d'afficher le contenu du champ "ville" puisqu'on sait que ce sera toujours Paris. Vous me direz que c'est la mme chose avec "Nom", certes, mais c'est mieux d'avoir une liste de nom + prnom qu'une seule liste de prnom. 2Liste des clients habitant Saint-Quentin OU Paris

Quelle est la diffrence ? Les deux critres ne sont plus sur la mme ligne. Ils sont sur deux lignes spares. Le premier est sur la ligne "Critres", le second sur la ligne "Ou". Si on avait voulu ajouter un troisime critre (Liste des clients habitant Saint-Quentin OU Paris OU Lille), on aurait ajouter le critre = "Lille" sur une troisime ligne et ainsi de suite.

Page 7 sur 17

Cours ACCESS

Les requtes

En rgle gnrale : ?? Si deux critres sont spars par des ET, on les place sur la mme ligne. ?? Si deux critres sont spars par des OU, on les place sur des lignes diffrentes. 3.4 Requte paramtre Pour l'instant, les critres de chaque requte que nous avons fait taient indiqus explicitement dans la requte. Supposons maintenant que nous voulions faire une requte du type : Liste de tous les clients qui habitent dans une ville mais quon veuille entrer nous mme la ville. On ne connat pas par avance la ville en question, et on ne va pas prparer autant de requtes qu'il peut y avoir de villes (on n'est pas sorti de l'auberge), la solution la plus simple est alors de demander l'utilisateur (l'utilisateur, c'est celui qui va utiliser votre requte plus tard) d'entrer la ville, et de faire la requte en fonction de ce qu'il a entr. Pour faire a, on procde ainsi :

Au lieu d'indiquer une ville, on a mis =[Entrez la ville]. Que va-t-il se passer lorsqu'on va excuter la requte? Habituellement, pour Access, tout ce qui est indiqu entre crochets est le nom d'un champ, si on avait mis par exemple = [Nom], il aurait cherch les clients qui habitent une ville qui s'appelle comme leur nom. Or ici, [Entrez la ville] n'est pas un nom de champ, Access ne sait donc pas ce que c'est, et il demande l'utilisateur d'entrer la valeur de ce champ inconnu :

L'utilisateur va entrer ici la ville (notez que le message affich est ce qui tait indiqu entre crochets dans la requte). Maintenant, chaque fois que Access va rencontrer dans la requte [Entrez la ville], il va le remplacer par ce qu' saisi l'utilisateur. Si l'utilisateur a saisi Paris, Access va remplacer dans son critre =[Entrez la ville] par = "Paris".

Page 8 sur 17

Cours ACCESS

Les requtes

4. Les requtes multitables


Pour l'instant, nos requtes ne portaient que sur une seule table, il est possible de faire des requtes qui portent sur plusieurs tables simultanment. Dans ce cas, les requtes peuvent tre trs complexes. Par exemple, si nous voulons la liste des clients ayant command le produit n 1 :

Avec le bouton :

, on affiche la liste des tables de la base.

On va choisir ici toutes les tables entrant en jeu pour pouvoir faire la requte. Ici on veut la liste des clients, il faut donc la table clients. "ayant command", il faut donc la table commandes , "le produit n1", il faut donc la table produits . Il faut aussi faire intervenir la table " Lignes-commandes ". Pourquoi ? parce que c'est elle qui fait la liaison entre la table commande et la table produits. De faon gnrale, lorsqu'on fait une requte portant sur plusieurs tables, il faut respecter deux rgles : ?? Toutes les tables intervenant dans la requtes doivent tre relies entre elles, il ne doit pas y avoir de tables isoles, sinon, Access va essayer de trouver lui-mme les relations entre ces tables isoles et parfois le rsultat peut tre folkorique. ?? Il ne doit pas y avoir de tables n'ayant rien faire dans la requte, sinon, Access va se baser sur les relations entre ces tables n'ayant rien voir avec la choucroute et celles ayant voir et va donner des rsultats errons. En rsum : toutes les tables ncessaires, mais pas plus. Vous pouvez noter que, une fois les bonnes tables installes avec les bonnes relations entre elles, la requte est fort simple, il suffit d'indiquer produits=1, et Access, grce aux relations, va retrouver la liste des clients ayant command ce produit.

Page 9 sur 17

Cours ACCESS

Les requtes

5. Les fonctions de regroupement


Jusqu' prsent, nos requtes nous permettaient de rpondre des questions du type : "Liste des clients habitant Paris", "Liste des produits commands par le client 1". Grce aux fonctions de regroupement, nous allons pouvoir rpondre des questions du type : " Combien de clients habitent Paris ?" ou " Pour combien command chaque client ?". Pour cela, cliquez sur le bouton :

Une nouvelle ligne " Opration" apparat dans la requte, c'est grce elle que nous allons faire nos oprations. 1Combien de clients habitent Paris

Qu'y-a-t-il de diffrent ? Nous avons deux champs : nous allons compter le nombre de clients, chaque client a un numro, on insre donc dans la requte le numro de client, c'est le nombre de ces numros que nous allons compter, il faut qu'on compte les clients habitant Paris, d'o le deuxime champ Ville. La diffrence est sur la ligne Opration : Elle indique comment va se faire l'opration, si nous voulons compter, on va choisir l'opration "compte ". Dans tous les champs o il y a un critre de slection (ici Ville = "Paris"), on choisira l'opration o. Le rsultat de la requte sera une table avec un unique champ, non modifiable, qui indiquera le nombre de clients habitant Paris.

Page 10 sur 17

Cours ACCESS

Les requtes

2-

Montant command par chaque client

Ca se corse ! Ici, on veut, par client, la somme de ses commandes. A partir du moment o on veut un rsultat par catgorie (une somme par client, un nombre de clients par ville, etc), il y a regroupement, ici on veut la somme des commandes regroupes par clients, c'est pour a qu'on a choisi comme opration pour numro de client "Regroupement". Pourquoi a-t-on ajout le champ "nom" ? Simplement pour ne pas avoir une liste de numros avec un montant correspondant. Pourquoi dans ce cas, n'a-t-on pas regroup les clients par leur nom au lieu de le faire par numro et nom ? parce que plusieurs clients peuvent avoir le mme nom et qu'on ne veut pas cumuler le montant des commandes par clients homonymes, on regroupe donc les clients par numro et nom. Enfin, le troisime champ : on veut la somme du montant des commandes : qu'est-ce qu'une commande ? c'est une liste de prix unitaires * une quantit. A la place d'un champ, on indique donc qu'on veut les prix unitaires * les quantits. La syntaxe est [nom de la table]![champ de la table], une commande, c'est donc une liste de [produits]![prix unitaire] * [lignes_commandes]![quantit]. Et on veut la somme de toutes ces commandes, on choisi donc l'opration "Somme". 5.1 Les oprations En plus de la somme et de compte, il existe d'autres oprations possibles : Oprat ion Compte Dernier Ecartype Max Min Moyenne Premier Somme Var Signification Compte le nombre de valeurs Valeur du dernier enregistrement Ecart type Valeur la plus leve Valeur la plus faible Moyenne Valeur du permier enregistrement Total Variance

Page 11 sur 17

Cours ACCESS 5.2 Quelques exemples

Les requtes

Voici quelques exemples de requtes : Nombre de clients nomms "Dupont" par ville

Liste des clients ayant command plus de 1000 F du produit 1

Page 12 sur 17

Cours ACCESS

Les requtes

6. Les requtes d'analyse croise


Les requtes d'analyse croise permettent de rpondre des questions du type "qui command combien de quoi ?". Elles retournent le rsultat sous forme d'un tableau comportant des champs en abscisse et en ordonne, avec, dans chaque case la rponse notre question. Exemple : Qui a command combien de quoi ? Qui Combien Combien Qui Combien combien

Quoi Quoi

L'en-tete "Qui" va contenir le nom des clients L'en-tte "Quoi" va contenir la liste des produits Et combien va donner, pour chaque client, le nombre de produits qu'il a command. Comment procde-t-on ? 1. D'abord on cre une requte standard : pour cette requte nous avons besoin du nom dans la table clients, du libell du produit dans la table produit et de la quantit command dans la table lignescommandes. On transforme la requte en requte d'analyse croise en allant dans le menu "Requte" et en choisissant "Analyse croise". Une nouvelle ligne apparat dans la requte : la ligne "Analyse" Dans cette ligne, on va indiquer si le champ qu'on a choisi va tre l'en-tte des colonnes, l'en-tte des lignes ou la valeur contenue dans les cases du tableau. L'Opration pour les en-ttes est toujours "Regroupement" L'Opration pour les valeurs des cases dpend de ce qu'on cherche, ici on cherche le nombre de produits achet, l'opration est donc "Somme"

2. 3. 4. 5. 6.

Page 13 sur 17

Cours ACCESS

Les requtes

7. Les requtes ACTION


Les requtes faites jusqu' prsent se contentent de retourner le rsultat d'une slection sous forme de table, cette table, tant, selon le type de requte, modifiable. Il existe cependant d'autres types de requtes, les requtes action, ces requtes vont permettre de : ?? ?? ?? ?? Crer une table partir du rsultat d'une requte Ajout des enregistrements une table partir des rsultats de la requte Mettre Jour une table en fonction de certains critres Supprimer des enregistrements rpondant aux critres de la requte

7.1 Les requtes Cration Une requte cration cre une table partir des rsultats qu'elle produit partir d'une table existante. Supposons que nous voulions crer une table "Commandes rgles" qui contiendrait la liste des commandes dj rgles. 1. Crer la requte normalement : nous voulons la liste des commandes rgles :

2. 3.

On la transforme en requte Cration (Menu Requte / Requte Cration de table) Access nous demande le nom de la table crer :

Attention, si vous slectionnez une table existante, la table va tre crase par cette opration

Page 14 sur 17

Cours ACCESS

Les requtes

4. Excutez la requte avec l'icne point d'exclamation : la table va tre cre avec le rsultat de la requte. Si vous vous voulez vrifier avant de crer la table quel sera le rsultat de la requte, cliquez sur l'icne:

Une fois que le rsultat sera conforme vos attentes, vous pourrez cliquer sur l'icne point d'exclamation. 7.2 Les requtes Ajout Une requte Ajout copie tout ou partie des enregistrements d'une table (la table source) la fin d'une autre table (la table cible). Toujours dans notre table "Commandes rgles", nous voulons ajouter les commandes qui ont t rgles depuis la semaine dernire : 1. Cration de la requte normale :

2. 3.

On la transforme en requte Ajout (Menu Requte / Requte Ajout) Access nous demande le nom de la table laquelle il faut ajouter le rsultat de la requte :

4.

Comme prcdemment, avec les icnes Affichage et point d'exclamation, vrifiez et validez votre requte.

Page 15 sur 17

Cours ACCESS

Les requtes

Attention : ?? Les enregistrements sont COPIES de la table source vers la table cible et non pas dplacs. ?? Les deux tables doivent avoir des noms de champs identiques (et les mmes types de donnes), les deux structures ne doivent pas ncessairement tre identiques. ?? Si la table source comporte plus de champs que la table cible, les champs supplmentaires sont ignors ?? Si la table source comporte moins de champs que la table cible, les champs dont les noms sont identiques sont copis, les autres sont laisss vides. ?? Access ne copie QUE les champs que vous avez dclars dans la requte (d'ou le champ *) 7.3 Les requtes Mise Jour

Les requtes mise jour permettent de modifier rapidement tous les enregistrements d'une table ou un groupe d'entre eux : Supposons que l'on veuille augmenter de 10% le prix des produits dont le prix actuel est infrieur 1000 F. 1. 2. On cre une requte, et dans le menu Requte, on clique sur "Requte Mise Jour" Un champ "Mise jour" apparat dans la requte, c'est l qu'on va indiquer la modification qui va avoir lieu :

Dans la case Mise Jour, on a indiqu, qu' la place du prix unitaire, nous voulions [prix_unitaire]*1.1 (soit une augmentation de 10%), ceci pour les produits dont le prix est infrieur 1000 (critre).

Page 16 sur 17

Cours ACCESS

Les requtes

7.4 Les requtes Suppression

Les requtes suppression vous permettent de supprimer un groupe d'enregistrements qui rpondent un critre donn. Supposons que l'on veuille supprimer de la table commande toutes les commandes rgles : 1. On cre une requte standard, puis dans le menu Requte, on clique sur Requte Suppression :

2.

On excute la requte ou on vrifie avant que le rsultat est conforme ce que l'on attend.

Attention : Vrifiez bien le rsultat avant d'excuter la requte, il n'est pas possible de revenir en arrire aprs avoir effac des enregistrements.

Page 17 sur 17

Vous aimerez peut-être aussi