1. Introduction
Les requêtes vont servir à afficher uniquement certaines données contenues dans les tables selon certains
critères. Elles peuvent aussi faire des calculs sur vos données, ainsi que créer des sources de données pour
les formulaires, les états ou même d'autres requêtes (on peut faire une requête sur le résultat d'une autre
requête). Elles servent encore à modifier des tables existantes ou à en créer des nouvelles.
Il existe différents types de requêtes que nous allons détailler après :
??
La requête sélection
: C'est celle qu'on utilisera le plus souvent. Elle permet de sélectionner des
enregistrements, de faire des calculs et des regroupements. Elles ressemblent beaucoup aux filtres, mais
permettent, en plus, de travailler sur plusieurs tables simultanément.
??
La requête d'Analyse croisée
: Cette requête présente ses résultats sous forme de tableau (de type
Excel). On l'utilisera pour comparer des valeurs, dégager des tendances.
??
La requête de Création de table
: Cette requête crée une table à partir des données qu'elle a extraites
dans une ou plusieurs autres tables.
??
La requête Mise à Jour
: Cette requête 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 opération.
??
La requête Ajout
: Cette requête ajoute les données qu'elle a extraites à la fin d'une table déjà
existante.
??
La requête Suppression
: Cette requête supprime un ou plusieurs enregistrements dans une ou
plusieurs tables.
Les trois derniers types de requêtes ne seront pas étudiés :
?? La requête SQL direct
?? La requête de définition de données
?? La requête UNION
2. Création d'une requête
Access nous propose 5 façons de créer une requête :
??
Mode création
: nous allons créer la requête de A à Z par nous-mêmes
??
Assistant de Requête simple
: Crée une requête simple sur une ou plusieurs tables, on pourra, dans
cette requête simple, faire des calculs, des regroupements.
??
Assistant de Requête d'analyse croisée
: Aide à la création d'une requête d'analyse croisée
??
Assistant de Requête trouver les doublons
: Localise les enregistrements doublons dans une table
ou une requête.
??
Assistant de Requête de non-correspondance
: 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
requête pour localiser les clients qui n'ont pas passé de commande.
Comme nous ne reculons pas devant l'effort, nous allons créer les requêtes par nous même, nous cliquons
donc sur Mode Création, puis, sur OK :
Access nous affiche la liste des tables de la base. Nous choisissons ici les tables sur lesquelles vont porter la
requête. Nous allons prendre pour exemple la requête "liste des clients habitant la ville
de Paris". La requête va donc porter sur la table "Clients", on la sélectionne, 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 requête sur le résultat d'une autre requête, dans ce cas, on choisira la
requête dans l'onglet "Requête".
Dans la partie supérieure de la fenêtre se trouvent la ou les tables avec la listes de leur champs, c'est sur ces
tables que vont porter les requêtes. Dans la partie inférieure, se trouve la description de la requête.
Voici notre requête :
Nous avons un tableau composé de colonnes et de lignes, dans chaque colonne, on indique les champs qui
vont apparaître dans le résultat de la requête ou qui vont servir dans la requête, ici on veut la liste des clients
habitant Saint-Quentin, on veut donc voir apparaître le champ Nom et le champ Prénom, le critère de la
requête va se faire sur le champ ville, on ajoute donc aussi ce champ.
Pour ajouter un champ, on peut, soit le sélectionner 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 sélectionne un dans la
liste. Un des champs proposé s’appelle '*', ce champ signifie "tous les champs de la table", si on choisi ce
champ, tous les champs de la table apparaitront dans le résultat de la requête, en plus des autres champs que
vous aurez choisis.
La ligne "Table" sert à selectionner la table à laquelle appartient le champ sélectionné, dans notre cas, il n'y
a qu'une table, le choix est vite fait.
La colonne "Tri" indique de quelle façon vont être triés les champs dans le résultat de la requête : il y a trois
sortes de tri : Croissant (de A à Z), Décroissant (de Z à A) et non trié. On a choisi ici de trier le résultat de la
requête par nom et par prénom de façon croissante. Le tri se fait toujours de gauche à droite : le résultat de la
requête sera d'abord trié par nom, puis par prénom.
La colonne "Afficher" indique si le champ doit être affiché ou non, ici on veut afficher le nom et le prénom
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 déselectionné l'affichage du champ
"Ville".
Enfin la colonne "Critères" va indiquer le critère de la requête, on veut la liste des clients habitant Sain-
Quentin, le critère est donc : le champ ville doit être égal à Saint-Quentin, d'où le critère = "Saint-Quentin".
Pour éxecuter la requête, on clique sur l'icône :
Access affiche le résultat :
Le résultat de la requête 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...
Attention : Les résultats des requêtes, même si ils sont présentés sous forme de tables ne sont pas de
véritables tables qu’aurait généré la requête. Ils ne sont qu'une "vue" faite à partir des tables qui ont servi à
faire la requête. Autrement dit, si vous modifiez quelque chose dans le résultat de la requête, la modification
se repercutera dans la table qui a servi à faire la requête, si on change ici le nom du client, la modification
sera reportée dans la table Clients, si on ajoute un client au résultat de la requête, un nouvel enregistrement
va être crée dans la table Clients, et en plus, cet enregistrement sera incomplêt car seuls deux champs
auront pu être saisis dans le résultat de la requête (les champs nom & prénom).
3. Définition des critères de sélection
3.1Opérateurs
On peut utiliser dans les requêtes les opérateurs suivants :
Opérateur
Signification
=
Egal
<>
Différent
<
Inférieur
>
Supérieur
<=
Inférieur ou égal
>=
Supérieur ou égal
Access met à notre disposition d'autres opérateurs :
Opérateur
Signification
Exemple
Entre
Sélectionne les enregistrements pour
lesquels la valeur d'un champ est
comprise dans un intervalle de
valeurs.
Entre "A" et "C"
Entre 10 et 20
Entre #01/01/99# et #31/12/99#
Dans
Sélectionne les enregistrements pour
lesquels la valeur d'un champ est
comprise dans une liste.
Dans ("Paris";"Saint-Quentin")
Est
Sélectionne les enregistrements pour
lesquels un champ est vide ou non
Est NULL
Est pas NULL
Comme
Sélectionne
les
enregistrements
contenant une donnée approximative.
Comme "rue*"
Pas
Sélectionne les enregistrements ne
correspondant pas au critère
Pas Entre "A" et "C"
3.2Les Fonctions
On peut intégrer des fonctions dans les critères de sélection. Access met à notre disposition un très grand
nombre de fonctions (pour en avoir la liste complète, consultez l'aide intégrée à Access). Ce sont les mêmes
fonctions que celles qui sont utilisés dans les contrôles des formulaires (et d’ailleurs 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 paramètre, 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 critères de sélection :
Par exemple, pour obtenir la liste des commandes du mois d'octobre :
Notez que pour faire référence au champ "Date de la commande" dans la fonction Mois ( ), on a écrit le
champ entre crochets [ ]. On utilise les crochets lorsqu’on travaille avec un champ dont le nom comporte
des espaces. Par extension et par mesure de précaution, on les utilisera avec tout type de champ.
Ou pour obtenir la liste des commandes passées il y a moins d'un mois :
Il existe un très grand nombre de fonctions, pour en avoir la liste et la syntaxe, consultez l'aide intégrée à
Access.
3.3 Plusieurs critères portant sur des champs différents
On peut avoir plusieurs critères de sélection, ces critères étant séparés 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".
1- Liste des clients s'appelant Dupont et vivant à Saint-Quentin
La requête ressemble à la précédente, sauf que là, il y a deux critères : le premier Nom = "Dupont" ET le
deuxième Ville = "Paris". Vous noterez au passage qu'il n'est pas nécessaire d'afficher le contenu du champ
"ville" puisqu'on sait que ce sera toujours Paris. Vous me direz que c'est la même chose avec "Nom", certes,
mais c'est mieux d'avoir une liste de nom + prénom qu'une seule liste de prénom.
2- Liste des clients habitant Saint-Quentin OU Paris
Quelle est la différence ?
Les deux critères ne sont plus sur la même ligne. Ils sont sur deux lignes séparées. Le premier est sur la
ligne "Critères", le second sur la ligne "Ou". Si on avait voulu ajouter un troisième critère (Liste des clients
habitant Saint-Quentin OU Paris OU Lille), on aurait ajouter le critère = "Lille" sur une troisième ligne et
ainsi de suite.
En règle générale :
?? Si deux critères sont séparés par des ET, on les place sur la même ligne.
?? Si deux critères sont séparés par des OU, on les place sur des lignes différentes.
3.4 Requête paramétrée
Pour l'instant, les critères de chaque requête que nous avons fait étaient indiqués explicitement dans la
requête. Supposons maintenant que nous voulions faire une requête du type :
« Liste de tous les clients qui habitent dans une ville » mais qu’on veuille
entrer nous même la ville.
On ne connaît pas par avance la ville en question, et on ne va pas préparer autant de requêtes 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 requête plus tard) d'entrer la ville, et de faire la requête en
fonction de ce qu'il a entré.
Pour faire ça, on procède ainsi :
Au lieu d'indiquer une ville, on a mis =[Entrez la ville]. Que va-t-il se passer lorsqu'on va exécuter la
requête?
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. suite dans la page suivante