formateur informatique

Didacticiel pour apprendre à créer des requêtes dans Access

Accueil  >  Bureautique  >  Access  >  Access Débutant  >  Didacticiel pour apprendre à créer des requêtes dans Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :

Abonnez-vous gratuitement à la chaîne Youtube Rossetti Stéphane .
Sujets et formations similaires :


Access - Les requêtes sur les tables
Les requêtes de synthèse
Les requêtes de synthèse permettent d'effectuer des regroupements de données issues de plusieurs tables. Elles affichent sous une même vue toutes les informations demandées. Dans le cas d'une table Clients et d'une table Commandes, la requête de synthèse regroupe les données pour afficher les commandes du client avec les informations du client. Elle permet de plus de faire des opérations de synthèse comme la somme des commandes en les regroupant par client. La vue qu'elle fournit permet donc une lecture de synthèse rapide et efficace. Le résultat d'une requête n'est ni plus ni moins qu'une table. Si bien qu'une requête peut être utilisée au même titre qu'une table pour construire les autres objets Access tels que les formulaires et les états.
  • Télécharger la base de données facturation-requetes.accdb en cliquant sur ce lien,
  • L'ouvrir dans Access,
Il s'agit d'une petite base de données de facturation avec la table des clients et celles des commandes du client. Elles sont donc reliées entre elles par le jeu des relations. Certains clients ont passé plusieurs commandes. Donc pour un client recensé dans la table Clients, il peut y avoir plusieurs lignes de commandes lui appartenant dans la table Commandes.
Base de données facturation, Clients et Commandes
  • Cliquer sur l'onglet Créer en haut de la fenêtre Access,
  • Cliquer sur le bouton Assistant requête dans la zone Requêtes,
  • Dans la boîte de dialogue qui apparaît, choisir Assistant requête simple et cliquer sur Ok,
Dans l'étape qui suit, nous souhaitons afficher les informations des tables Clients et Commandes pour les regrouper.
  • Choisir Table :Clients dans la liste déroulante Tables/Reqêtes,
  • Cliquer sur le bouton à double flèche de la zone centrale afin de sélectionner tous ses champs,
  • Choisir ensuite Table : Commandes dans la liste déroulante Tables/Reqêtes,
  • Double-cliquer sur le champ Commandes_num pour le basculer à droite,
  • De la même façon, double cliquer sur Commandes_total et Commandes_date,
Ajout des champs dans assistant requête
Ainsi nous n'ajoutons pas le champ Commandes_client. Il sagit en effet de la clé externe reliée à la clé primaire de la table Clients. Nous avons déjà ajouté le champ Clients_num, donc nous ne souhaitons pas répéter cette information.
  • Cliquer sur le bouton Suivant pour continuer la construction de la requête,
  • Cocher la case Synthèse et cliquer sur le bouton Options de synthèse,
Nous souhaitons afficher le nombre de commandes par client ainsi que la somme des commandes par client. Pour ce faire, dans la boîte de dialogue qui est apparue :
  • Cocher la case Somme pour le champ Commandes_total,
  • Cocher la case Compter les enregistrements dans Commandes,
  • Cliquer sur Ok pour valider ces choix,
Opération de synthèse, somme requête Access
  • Cliquer ensuite sur le bouton Suivant pour poursuivre,
  • Dans cette étape, conserver le choix de groupement Date/heure unique,
  • Puis cliquer sur Suivant,
  • Enfin donner un titre à la requête comme : Commandes_du_client,
  • Et cliquer sur Terminer pour valider la création de la requête.
Affichage requête en mode feuille de données
Les résultats de la requête s'affichent dans la partie centrale de l'écran sous une vue semblable à celles des tables. Vous notez de même que ce nouvel objet, Commandes_du_client, s'affiche dans la liste des objets Access sur la gauche, dans la partie Requêtes. De plus vous constatez que les informations des clients et de leurs commandes sont bien affichées ensemble. A l'origine, elles appartiennent pourtant à deux tables distinctes reliées entre elles. En plus de cela, les commandes d'un même client sont regroupées. D'une part les informations du client ne sont ainsi pas répétées sur plusieurs lignes, d'autre part la somme des montants des commandes d'un client est synthétisée dans un nouveau champ et enfin un dernier champ récapitule le nombre de commandes du client. Cette requête pourtant simple à la construction offre déjà beaucoup de précieux renseignements synthétisés.
  • Cliquer sur l'onglet Accueil,
  • Dans le ruban, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, cliquer sur Mode création,
Cette vue permet de voir tous les champs inclus dans la requête et d'agir dessus. Il est ainsi possible de visualiser les opérations, comme celle de la somme. Nous pouvons la modifier ou effectuer d'autres opérations et aussi ajouter des critères. Nous allons commencer par masquer les champs dont les renseignements sont moins importants.
  • Décocher la case Afficher du champ Clients_prenom,
  • Décocher la case Afficher du champ Premier de Commandes_num,
  • Décocher la case Afficher du champ Premier de Commandes_date,
Masquer des champs en mode création de requête
  • Dans le ruban, cliquer sur le bouton Exécuter pour afficher la requête en Feuille de données,
La vue est plus épurée, plus simple à lire.
  • Revenir en mode Création,
Opérations sur des nombres dans les requêtes de synthèse
Vous remarquez la présence d'une ligne Opération. Tous les champs qui peuvent l'être sont regroupés (Regroupement) lorsqu'ils correspondent comme Clients_num. Pour ces regroupements, l'opération Somme est réalisée sur le champ Somme de Commandes_total. Nous souhaitons maintenant afficher les commandes des montants les plus importants vers les plus petits.
  • Régler la valeur du Tri sur Décroissant pour le champ Somme De Commandes_total,
  • Cliquer sur le bouton Exécuter du ruban,
Vous remarquez que les commandes s'affichent bien triées de la plus grande somme vers la plus petite. Nous souhaitons maintenant n'afficher que les clients qui ont passé plusieurs commandes.
  • Revenir en mode création de la requête,
  • Taper >1 dans la zone Critères du champ Compte De Commandes,
  • Cliquer sur le bouton Exécuter du ruban,
Critère de requête en mode création



Seuls les clients ayant passé plusieurs commandes apparaissent triés selon la somme totale de leurs commandes. Ainsi, à une requête de synthèse qui réalise déjà de précieuses opérations automatiquement, nous sommes capables d'ajouter très simplement des restrictions, critères et tris grâce au mode création. Nous obtenons facilement une requête relativement complexe à l'usage pertinent et efficace.

Le code des requêtes - Le langage SQL
Chacune des requêtes que vous réalisez à l'aide des assistants est bâtie sur un langage universel. Le Sql est le langage de requêtage qui permet d'attaquer les données pour en extraire les informations selon criètre. Pour présenter sommairement ce langage associé, nous allons créer une requête très simple, sur une table seulement. Nous consulterons ensuite son code et tenterons d'y appliquer quelques ajustements.
  • Dans le ruban Créer, cliquer sur le bouton Assistant requête,
  • Dans la boîte de dialogue, choisirAssistant requête simple et cliquer sur Ok,
  • Dans l'étape qui suit, sélectionner Table : Clients dans la liste Tables/Requêtes,
Vous remarquez à ce stade que la requête que nous avons précédemment construite est proposée dans la liste. Cela signifie qu'une requête peut être utilisée pour créer une autre requête plus complexe.
  • Sélectionner tous les champs de la table Clients en cliquant sur le bouton double flèche au centre de la boîte de dialogue,
  • Cliquer sur Suivant,
  • Nommer cette requête Requete_clients et cliquer sur Terminer,
Nous obtenons exactement la même vue que celle de la table Clients. A ce stade, cette requête fait donc office de doublons.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, cliquer sur Mode SQL,
Plutôt que d'afficher la requête en mode création comme nous l'avons fait précédemment, nous décidons d'accéder directement au code source de cette dernière.
Langage SQL requête base de données Access
Le code exact de la requête est le suivant :
SELECT Clients.[clients_num], Clients.[clients_civilite], Clients.[clients_nom], Clients.[clients_prenom], Clients.[clients_cp], Clients.[clients_ville], Clients.[clients_dateN] FROM Clients;

SELECT est le mot clé SQL pour débuter une requête sélection. Tous les champs qui suivent séparés d'une virgule seront sélectionnés et affichés dans le résultat de la requête. Un champ comme clients_num s'écrit entre crochets et est précédé du nom de la table dont il est issu : Clients.[clients_num]. Ici, tous les champs de la table Clients sont énumérés car nous les avons tous sélectionnés. FROM est le mot clé SQL qui permet de désigner sur quelle table nous effectuons la requête sélection. Donc FROM Clients signifie que nous réalisons la requête sur la table Clients. Nous terminons toujours la syntaxe par un point-virgule. Commençons les modifications. Nous ne voulons plus voir apparaître les champs prenom et cp :
  • Dans le code, supprimer les fragments, Clients.[clients_prenom], et Clients.[clients_cp],,
Pensez bien à ne pas oublier la virgule qui va avec, sinon vous obtiendrez une erreur de syntaxe.
  • Enregistrer (CTRL + S),
  • Cliquer sur le bouton Exécuter du ruban,
Nous obtenons bien une vue restreinte de la table Clients, avec deux champs en moins.
  • Cliquer sur Mode Sql dans le bouton Affichage pour revenir dans l'éditeur de code,
Il existe une méthode très simple pour désigner tous les champs d'une table dans une requête sélection. Il suffit de remplacer l'énumération des champs par le symbole * qui signifie Tous.
  • Modifier la requête comme suit : SELECT * FROM Clients;,
  • Cliquer le bouton Exécuter,
De nouveau nous retrouvons la vue de la requête initiale mais nous avons considérablement simplifié la syntaxe. Nous souhaitons maintenant afficher les clients du plus ancien au plus jeune. Le mot clé ORDER BY suivi du nom du champ permet de réaliser un tri dans une requête. Son expression doit toujours être placée en dernier, avant le point-virgule de clôture de la syntaxe.
  • Revenir dans l'éditeur SQL,
  • Ajouter l'expression de tri avant le point virgule : ORDER BY Clients.[Clients_dateN],
  • Cliquer sur le bouton Exécuter,
Nous obtenons bien un tri croissant des clients sur leur date de naissance : SELECT * FROM Clients ORDER BY Clients.[Clients_dateN];. Si nous avions souhaité un tri décroissant, du plus jeune au plus ancien, nous aurions ajouté le mot clé DESC : ORDER BY Clients.[Clients_dateN] DESC. Nous souhaitons n'afficher maintenant que les clients de l'Ardèche, soit les clients dont le code postal commence par 07. Nous en avons deux. Pour ajouter un critère dans une requête, nous allons devoir insérer une clause WHERE dans la syntaxe. Nous ne pouvons pas utiliser le symbole égal pour la correspondance car aucun des codes postaux n'est égal 07. Nous allons utiliser l'opérateur LIKE pour signifier que nous recherchons tous les champs qui commence par 07. La clause WHERE intervient toujours après la clause FROM suivi du nom de la table.
  • Revenir dans l'éditeur SQL,
  • Ajouter la clause WHERE suivante : WHERE Clients.[Clients_cp] LIKE '07*', après la clause FROM,
Nous demandons désormais d'afficher les clients pour lesquels (WHERE) le code postal commence par 07. Comme le code postal est un champ texte, nous écrivons l'expression entre guillemets. Le * placé juste derrière signifie, quels que soient les caractères qui suivent le 07 : SELECT * FROM Clients WHERE Clients.[Clients_cp] LIKE '07*' ORDER BY Clients.[Clients_dateN];.
  • Cliquer sur le bouton Exécuter,
Critère clause Where requête en SQL
Il ne nous reste en effet plus que deux enregistrements, ceux de l'Ardèche, triés croissants sur la date de naissance. Avec quelques petites retouches dans la syntaxe SQL nous avons donc bien réussi à personnaliser notre requête.
  • Fermer la requête en cliquant sur la croix de son onglet.

Requête de non correspondance
La requête de non correspondance est proposée dans la liste de l'assistant requête. Comme son nom l'indique, elle permet d'isoler avec grande simplicité les enregistrements orphelins. Dans notre cas, nous avons des clients dans la table Clients qui passent des commandes dans la table Commandes. Or certains de ces clients n'ont à ce jour encore passé aucune commande. Nous devons les extraire, pour les relancer commercialement par exemple. La requête est d'autant plus efficace que la base est volumineuse. Son code, si nous devions la concevoir nous même serait complexe.
  • Cliquer sur le bouton Assistant requête dans le ruban Créer,
  • Dans la boîte de dialogue, sélectionner Assistant requête de non correspondance et cliquer sur Ok,
Requête de non correspondance, enregistrements orphelins
  • Dans l'étape qui suit, sélectionner la table Clients,
  • Et cliquer sur Suivant,
C'est en effet elle qui contient les enregistrements Orphelins que nous souhaitons débusquer.
  • Dans cette nouvelle étape, sélectionner la table Commandes,
  • Et cliquer sur Suivant,
C'est en effet elle la table liée, qui permettra de définir qui n'a pas passé de commande. Dans l'étape qui suit, nous devons confirmer à Access quel est le lien entre les clients et leurs commandes.
  • Sélectionner le champ Clients_num sur la partie gauche, il s'agit de la clé primaire,
  • Sélectionner le champ Commandes_client sur la partie droite, il s'agit de la clé externe,
  • Cliquer sur le bouton à deux flèches sur la partie centrale de la boîte de dialogue,
Nous réaffirmons ainsi le lien entre les deux tables.
Liaison des clés dans une requête de non correspondance
  • Cliquer sur le bouton Suivant,
Cette avant dernière étape demande quelles sont les informations à afficher concernant les clients qui n'ont pas passé de commande. Nous les voulons toutes.
  • Cliquer sur le bouton à deux flèches sur la partie centrale,
  • Cliquer sur Suivant,
  • Enfin, nommer la requête Clients_sans_commandes et cliquer sur Terminer.




Enregistrements orphelins extraits par requête
Dans une vue Feuille de données, nous obtenons effectivement les clients n'ayant jamais passé commande. Ce traitement est d'autant plus intéressant qu'à chaque exécution de la requête, la liste est susceptible d'évoluer si les contenus des tables Clients et Commandes évoluent eux-mêmes. Si vous ouvrez la table Commandes en mode Feuille de données, vous constaterez bien que les clients concernés n'ont jamais passé commande (Champ Commandes_client).

Les requêtes paramétrées
Il s'agit de requêtes spécifiques pour lesquels nous entrons volontairement un argument erroné. Ainsi au moment de s'exécuter, Access demande des précisions sur cet argument. Nous lui fournissons, et nous isolons ainsi la ligne en instantané. Imaginez que vous souhaitez, derrière votre caisse, retrouver rapidement les informations d'un client qui est en face de vous au moment de payer. Vous n'allez par parcourir toute la table à sa recherche, ou refaire une requête sous ses yeux. Non, vous allez exécuter une requête toute prête qui demande simplement le nom du client à afficher. Le plus simple est de partir d'une requête existante, Commandes_du_client et de fournir un critère impécis sur son nom de manière à amener Access à poser la question.
  • Cliquer avec le bouton droit de la souris sur la requête Commandes_du_client dans le volet de gauche,
  • Dans le menu contextuel, cliquer sur Mode création,
  • Supprimer le critère >1 dans le champ Compte De Commandes...,
  • Dans la zone Critères du champ Clients_nom, taper : [Nom du client ?],
Les crochets sont impératifs. Ils signifient à Access qu'il s'agit d'un paramètre à définir.
Requête paramatrée, critère variable
  • Cliquer sur le bouton Exécuter du ruban,
Comme vous le remarquez une boîte de dialogue se déclenche avec le message que vous avez personnalisé entre crochets.
  • Taper un nom de client ayant passé commande comme Decajou,
La casse n'est pas importante.
  • Valider en cliquant sur Ok,

Vous obtenez l'information isolée en instantané.
  • Fermer la requête en cliquant sur la croix de son onglet.

Les requêtes Action
Requête Mise à jour ou Update
Les requêtes Action sont celles qui agissent sur les données des tables. Elles ne se contentent plus de les sélectionner pour en offrir une vue personnalisée, elles les modifient. Nous allons d'abord réaliser une copie de la table Clients sur laquelle nous allons faire les manipulations avec les requêtes Action.
  • Sélectionner la table Clients dans le volet de gauche des objets Access,
  • Réaliser les raccourcis CTRL + C puis CTRL + V au clavier,
  • Dans la boîte de dialogue qui apparaît, cliquer sur Ok.
La copie de la table apparaît dans la liste des tables du volet de gauche.
  • Faire de même avec la table Commandes pour obtenir une copie,
  • Cliquer sur l'onglet Créer,
  • Cliquer sur le bouton Création de requête du ruban Accueil,
Cette fois, nous ne passons pas par l'assistant.
  • Dans la boîte de dialogue qui apparaît, double cliquer sur la table Copie de Commandes pour l'ajouter,
  • Puis cliquer sur le bouton Fermer de la boîte de dialogue.
Nous sommes de retour dans le mode création d'une requête.
  • Dans le rectangle schématisant la table, cliquer sur le premier champ pour le sélectionner,
  • Puis, en maintenant la touche MAJ enfoncée, cliquer sur le dernier,
Ainsi vous sélectionnez tous les champs de la table.
  • Cliquer et glisser cette sélection sur la grille de requête en bas de fenêtre.
Ainsi vous ajoutez tous les champs de la table Commandes dans la zone de requête.
Mode création requête Action
A ce stade, si vous cliquez sur le bouton Exécuter, vous n'obtiendrez rien de plus qu'une vue de la table Commandes. Soit une basique requête sélection. Nous souhaitons appliquer une remise de 10% aux clients dont le montant de la commande dépasse 100 Euros.
  • Dans le ruban, cliquer sur le bouton Mise à jour,
Vous transformez ainsi votre requête en requête action, précisément mise à jour ou Update en langage Sql. Vous remarquez que les lignes Afficher et Tri disparaissent au profit notamment de la ligne Mise à jour.
  • Dans la zone Critères du champ Commandes_total, taper >100,
  • Dans la zone Mise à jour du même champ, taper l'expression [Commandes_total]*0,9,
Nous venons donc d'indiquer à Access de faire une remise de 10% (1-0,1=0,9) sur le champ Commandes_total lorsque le montant est >100.
  • Cliquer sur le bouton Exécuter,
Un message d'avertissement Access apparaît. Il vous informe que quatre lignes de la table sont concernées et que vous allez les modifier.
  • Cliquer sur Oui pour continuer.
Vous remarquez que l'exécution s'arrête. En effet, une requête Action n'affiche pas de vue mais elle agit.
  • Afficher les tables Commandes et Copie de Commandes,
  • Basculer de l'une à l'autre.
Vous remarquez effectivement que tous les montants supérieurs à 100 ont été remisés de 10%. Attention, à chaque fois que vous exécuterez cette requête, les montants supérieurs à 100% subiront une nouvelle remise de 10%. Dans certains cas, il est préférable de supprimer ces requêtes après action.
  • Fermer cette requête en cliquant sur la croix de son onglet.
Si vous choisissez d'enregistrer la requête, vous la voyez apparaître dans le volet de gauche avec son icône de mise à jour pour bien la distinguer des autres.

Requête Suppression ou Delete
Nous souhaitons maintenant mettre en oeuvre une autre requête action dans le but d'épurer la table Clients en supprimant les clients de l'Ardèche, pour cause de délocalisation par exemple.
  • Cliquer sur le bouton Création de requête du ruban Créer,
  • Dans la boîte de dialogue, double cliquer sur la table Copie de Clients pour l'ajouter,
  • Fermer la boîte de dialogue,
  • Comme précédemment, ajouter tous les champs de la table dans la zone de requête,
  • Cliquer sur le bouton Suppression du ruban,
Vous transformez votre requête en requête Suppression. La ligne Tri est remplacée au profit de la ligne Supprimer. Si vous exécutez la requête en l'état, vous supprimerez tous les enregistrements de la table dans la mesure où aucune restriction n'est posée.
  • Dans la zone Critères du champ Clients_cp, taper 07* et enfoncer la touche tabulation pour valider,
Critère et mise à jour requête Action
Vous remarquez qu'Access transforme instantanément l'expression en Comme '07*' qui est l'équivalent du LIKE '07*' que nous avons abordé plus haut avec le langage SQL. Cette requête est donc censée supprimer tous les clients dont le code postal commence par 07.
  • Cliquer sur le bouton Exécuter,
  • Dans le message, Access vous informe que vous allez supprimer des enregistrements, cliquer sur Oui,
L'exécution s'arrête. Encore une fois, une requête action agit sur les données mais ne les affiche pas. Si vous cliquez de nouveau sur le bouton Exécuter, Access vous informe qu'il n'y a plus d'enregistrements à supprimer. Ceci semble indiquer que le requête a fonctionné.
  • Enregistrer la requête sous le nom Suppression_clients_07,
  • La fermer en cliquant sur la croix de son onglet.
Elle apparaît désormais dans le volet de gauche accompagnée de son icône de suppression pour bien la distinguer.
  • Afficher les tables Clients et Copie de Clients.
En basculant de l'une à l'autre, vous remarquez qu'il ne reste plus que les codes postaux en 26 dans la copie.
Suppression enregistrements table par requête



 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn