Administration et communication

Sommaire des productions

BTS Assistant de gestion de PME-PMI  /
  Applications bureautiques et informatiques


Les requêtes sélection
Comment choisir les tables sources des données dans une requête sélection.

(05/2002)

1 - Qu'est-ce qu'une requête Sélection et quand l'utiliser ?

La requête Sélection de Access est le type de requête le plus courant. Elle est la requête standard, celle qui est créée par défaut.

  1. Elle récupère des données contenues dans une ou plusieurs tables et affiche les résultats sous la forme d'une feuille de données.
  2. Il est possible d'effectuer une mise à jour des enregistrements directement dans cette feuille de données ou dans le formulaire créé à partir de la requête (sous réserve de quelques restrictions).
  3. Remarque : on peut également utiliser une requête Sélection pour regrouper des enregistrements et calculer une somme, une moyenne ou effectuer un comptage ou tout autre type d'opération.

2 - Un exemple et sa solution

Mise en situation : un club sportif (ASL, 24 pl. de la gare, à Grenoble) organise des stages de ski d'une journée pour ses adhérents (nom, prénom, numéro, date de naissance, adresse rue, code postal, adresse ville…). Les stages ont un nom qui change chaque année : étoile, cristal, paillette, colonne, granule, dendrile, aiguille pour la saison en cours. Ils ont un niveau, un contenu, une date, un lieu…
Un adhérent peut suivre plusieurs stages pendant une saison.

Le travail à faire : le système d'information doit permettre d'inscrire les adhérents pour les stages qu'ils souhaitent suivre.


Remarque : la solution proposée a pour seul but de démontrer l'importance du choix des tables sources des données dans la requête. Elle est donc simplifiée par rapport à une solution professionnelle.

Phase 1 : la modélisation, la réalisation du modèle physique, la création des tables, la mise en relation des tables dans Access.


Le modèle comporte donc une entité adhérent, une entité stage et une association "inscription au stage". Il faut donc créer les trois tables suivantes :

Adhérent Stage Inscription
Numadher
Nomadher
Prenomadher
Naissadher
Adrueadher
Cpadher
Adviladher
Numsta
Nomsta
Niveausta
Contenusta
Datesta
Lieusta
# Numadher
# Numsta

Après création des tables, on peut utiliser la fonction "Relations" de Access pour définir les relations par défaut entre les tables. On place judicieusement les tables, puis on clique-glisse chaque clé primaire vers la clé étrangère de l'association. Access reconnaît dans quel sens doit fonctionner la relation. Il suffit de cocher "Appliquer l'intégrité référentielle"

Modification des relations


et de vérifier le type de jointure. Pour de nombreux cas de gestion courante, on peut accepter le type de jointure 1 (voir la page sur les propriétés des jointures):


On obtient le schéma suivant :


Relations dans Access

Phase 2 : création de la requête


Requête 1 :

Requête 2 :

ou requête 2 bis :

Requête 3 :


On observe des différences entre ces quatre requêtes : les données ne viennent pas des mêmes tables. Or elles donnent la même feuille de données (bien entendu la 2me bis n'affiche pas le numéro d'adhérent).

Phase 3 : création du formulaire avec sous-formulaire


Dans la fenêtre "Comment souhaitez-vous afficher vos données ?", choisir ou accepter "Par adhérent".

Le formulaire généré à partir de la requête 1 permet à la fois de saisir un nouvel adhérent (numéro, nom et prénom) et de nouvelles inscriptions aux stages. Mais attention, la saisie de nouveaux adhérents n'est pas prévue dans l'énoncé et les données seraient incomplètes. Bien entendu, on peut ajouter dans la requête tous les autres attributs de l'adhérent

Avec la requête 2, le numéro "adhérent" se retrouve dans le sous-formulaire sauf si on ne le sélectionne pas. Le formulaire ne permet pas de saisir un nouvel adhérent (Un message s'affiche : "Enregistrement impossible"). mais permet de saisir de nouvelles inscriptions : c'était notre but.

La requête 2 bis est une version simplifiée de la précédente : le numéro de l'adhérent n'est pas utilisé. Elle fonctionne comme la précédente.

Dans la requête 3, on remarque que la donnée "Numsta" provient de la table Stage et non pas de la table Inscription. Le formulaire généré ne permet pas de saisir de nouvelles inscriptions. Le message suivant s'affiche :


En conséquence, cette requête ne peut pas être utilisée pour la mise à jour des données.


3 - Utilisation d'une requête Sélection pour faire une recherche.

Prenons l'exemple de la requête 1 ci-dessus. Elle permet d'afficher les adhérents qui sont déjà inscrits à un ou plusieurs stages. MAIS un adhérent inscrit à deux stages apparaît deux fois, un adhérent inscrit à 3 stages apparaît 3 fois, etc. Comment faire un publipostage aux adhérents inscrits ? C'est à dire comment empêcher l'apparition des doublons dans une requête basée sur plusieurs tables ? Voici le mode opératoire de l'aide de Access.
  1. Ouvrez la requête en mode Création.
  2. Sélectionnez la requête en cliquant n'importe où dans la requête mais en dehors de la grille de création et des listes de champs.
  3. Cliquez sur Propriétés dans la barre d'outils pour afficher la feuille des propriétés de la requête.
  4. Attribuez la valeur Oui à la propriété Valeurs distinctes.
  5. Décochez Numsta et Nomsta dans la grille pour empêcher la projection de ces données.
Voilà, vous obtenez la liste des adhérents déjà inscrits (bien entendu, pour un publipostage vous auriez modifié la requête en ajoutant les champs d'adresse).


Retour au Sommaire des productions pédagogiques

Retour à l'Accueil de la spécialité

http://www:ac-grenoble.fr/ecogest/pedago/administration/prodpeda/reqselec.htm