Université Hassan II - Casablanca
Faculté des sciences juridiques, économiques et sociales Mohammedia
Cours Informatique Appliquée
Gestion de Base de données avec ACCESS
Semaine 11 Mai – 18 Mai
Amal EL MZABI
2
Les Requêtes ACTION
Les requêtes faites jusqu'à présent se contentent de retourner le résultat d'une sélection sous forme de table.
Une requête sélection
n’aaucune incidence sur le contenu de la table, à moins que
l’onmodifie manuellement.
Par contre, il existe d'autres types de requêtes, les requêtes action, ces requêtes servent :
➢
Soit à créer, à modifier ou à supprimer une table,
➢
Soit à ajouter, à mettre à jour ou à supprimer
des enregistrements en fonction de certains critères.
3
Une requête action est, au départ, une requête sélection que l’on transforme par la suite.
Pour créer une requête action :
➢ On affiche d’abord une requête sélection
➢ Ensuite on transforme cette requête sélection en requête action en activant le bouton correspondant au type de requête souhaité du groupe «Type de requête » que l’on trouve dans l’onglet Créer des « Outils de requête ».
Une fois transformée en requête action, le nom de la requête apparaît dans le Volet de navigation avec un point d'exclamation noir et une icône indiquant son type.
Principe de création d'une requête action
4
Affichage et exécution
Une fois la requête sélection convertie en requête action, et avant de l’exécuter, vérifiez les résultats obtenus en basculant l’affichage du mode Création en mode Feuille de données par le bouton « Affichage ».
Pour exécuter la requête action : retournez si nécessaire en mode Création et cliquez sur le bouton « Exécuter ».
Remarque
: La requête action s’exécute à chaque fois que vous appuyez sur le bouton d’exécution. Un message vous montre les modifications effectuées mais rien ne s’affiche à l’écran comme le cas d’une requête sélection.5
Requête Création de table
Une requête Création crée une table à partir des résultats provenant d'une table existante.
Exemple
: Dans notre BD « Gestion des commandes », on souhaite créer une table des clients de Casablanca.Pour ce faire :
Il existe quatre types de requêtes action : requêtes « Création de table », « Ajout », « Mise à jour » et « Suppression ». Ces trois derniers types de requêtes concernent les enregistrements.
En SQL: CREATE, INSERT, UPDATE, et DELETE.
Types de requêtes action
6
2. En mode Création, dans le groupe Type de requête cliquer sur la commande Création de table. La fenêtre Création de table s’ouvre :
1. Créer une requête sélection et ajouter les critères pour afficher toutes les informations des clients de Casablanca.
7
3. Taper le nom de la table à créer, ClientsCasa. Il est possible de choisir dans la liste une table déjà existante et l’écraser par la nouvelle.
4. Cliquer sur le bouton OK, puis sur le bouton Exécuter pour créer la nouvelle table. La table ClientsCasa est apparue alors dans la liste des tables.
Mode SQL
Pour créer une table à partir d’une autre table ou des résultats d’une requête on utilise la syntaxe suivante :
SELECT Champ1, Champ2, … INTO NouvelleTable FROM ...
8
Select Clients.* INTO ClientsCasa From Clients
Where Ville = "Casablanca";
Pour notre exemple on utilise :
Pour créer une table à zéro on utilise la syntaxe suivante :
CREATE TABLE Nom_de_la_table (
Champ1 PRIMARY KEY type_donnees, Champ2 type_données,
Champ3 type_données, Champ4 type_données
)
PRIMARY KEY : indique le champ1 est considérée comme clé primaire
9
Requête Ajout
Une requête Ajout copie tout ou une partie des enregistrements d'une table (la table source) à la fin d'une autre table (la table cible).
➢ Les enregistrements sont COPIES de la table source vers la table cible et non pas déplacés.
➢ Les deux tables doivent avoir des noms de champs identiques (et les mêmes types de données), les deux structures ne doivent pas nécessairement être identiques.
➢ Si la table source comporte plus de champs que la table cible, les champs supplémentaires sont ignorés
➢ Si la table source comporte moins de champs que la table cible, les champs dont les noms sont identiques sont copiés, les autres sont laissés vides.
➢ Access ne copie QUE les champs que vous avez déclarés dans la requête.
10
Exemple
: Dans la table "ClientsCasa", on ajoute les clients de la ville de Rabat à partir de la table Clients dans la BD « Gestion de commandes » :− Créer la requête de sélection pour afficher les clients de Rabat.
− Dans le groupe Type de requête, cliquer sur le l’élément Ajout.
− Choisir le nom de la table à laquelle il faut ajouter le résultat de la requête
11
− Une ligne Ajouter à s’ajoute à la requête sélection :
− Sauvegarder votre requête et cliquer sur le bouton Exécuter pour lancer votre requête.
12
Mode SQL
Pour créer une requête Ajout on utilise la syntaxe suivante : INSERT [INTO] Nom_de_table_cible [(champ1, Champ2,…)]
VALUES (Valeur1, Valeur2,…) Ou Requête_Select
Si on souhaite insérer des nouvelles valeurs après la dernière ligne de notre table cible, on utilise la commande VALUES suivie des valeurs des champs.
Exemple :
INSERT INTO ClientsCasa
VALUES ("A500", "Mimouni", "Yara", "Rabat", Null)
Indique que ce champ est vide
13
Une fois la requête exécutée on aura :
Vous pouvez également préciser les noms des champs où vous allez insérer des nouvelles valeurs.
Exemple :
INSERT INTO ClientsCasa (CodeClient, Ville) VALUES ("B100", "Tanger")
Remarque
: Les valeurs doivent être saisies dans l’ordre des champs et correspondre chacune au type de données du champ.14
INSERT INTO ClientsCasa SELECT Clients.*
FROM Clients
WHERE Ville = "Rabat";
Ou bien, on veut insérer des valeurs issues des autres tables en utilisant une requête sélection comme le cas de notre exemple : Dans la table ClientsCasa, ajoutez des clients de la ville de Rabat à partir de la table Clients.
15
Requête Mise à jour
Les requêtes mise à jour permettent d’effectuer des modifications sur des lignes existantes d'une table ou un groupe d'entre eux. Ces modifications peuvent être conditionnées par un ou plusieurs critères. Pour créer une requête mise à jour :
➢ Créer une nouvelle requête sélection en ajoutant les champs concernés par la mise à jour. Placer aussi les champs concernés éventuellement par les critères.
➢ Convertir la requête sélection en requête action en cliquant sur le bouton Mise à jour Dans le groupe Type de requête.
➢ Une ligne Mise à jour apparait où on indique l’expression de la modification pour le(s) champ(s) concerné(s).
16
Remarque
: Une mise à jour une fois exécutée ne pourra pas être annulée.Exemple 1
: Dans la BD « Gestion des commandes », on veut augmenter de 20% le prix unitaire pour chaque produit dont le prix actuel est inférieur à 1500 DH.➢ Pour afficher la liste des enregistrements qui seront mis à jour, cliquer sur Affichage dans le groupe Résultats.
➢ Pour appliquer la mise à jour sur les enregistrements, cliquer sur le bouton Exécuter.
17
Dans la case Mise à Jour, on a indiqué, qu'à la place du prix unitaire, nous voulions [PU]*1.2 (soit une augmentation de 20%), ceci pour les produits dont le prix est inférieur à 1500 (critère).
Mode SQL
UPDATE [Nom_Table] SET champ1 = valeur1, champ2 = Valeur2,…
WHERE [Conditions] ;
Pour modifier ou mettre à jours des données dans une table on utilise la syntaxe suivante :
18
Pour notre premier exemple, le code SQL est : UPDATE Produits SET PU = [PU] * 1.2 WHERE PU < 1500 ;
Exemple 2
: Dans la BD « Gestion des commandes », on cherche à doubler les quantités commandées par les clients de « Rabat » pour les commandes du 15 premiers jours du mois de Mars 2019.Mode QBE : On crée une requête sélection puis on la transforme en cliquant sur le bouton Mise à jour :
19
Vérifiez les résultats en basculant l’affichage en mode Feuille de données avant d’exécuter la requête.
Mode SQL
UPDATE (Clients INNER JOIN Commandes ON
Clients.CodeClient = Commandes.CodeClient) INNER JOIN DétailsCommande ON Commandes.NumCmd =
DétailsCommande.NumCmd SET Quantité = [Quantité]*2 WHERE Ville = "Rabat" AND Day([DateCmd]) <= 15 AND Month([DateCmd]) = 3 AND Year([DateCmd]) = 2019;
UPDATE Clients, Commandes, DétailsCommande SET Quantité = [Quantité]*2
Where (Clients.CodeClient = Commandes.CodeClient) And
(Commandes.NumCmd = DétailsCommande.NumCmd) And Ville=
"Rabat" And Day([DateCmd]) <= 15 And Month([DateCmd])=3 And Year([DateCmd]) = 2019;
Ou bien
20
Requête Suppression
Les requêtes suppression permettent de supprimer un groupe d'enregistrements qui répondent à un critère donné. Et pour créer une requête suppression, il faut toujours :
➢ Commencer par la création d’une requête sélection avec les champs concernés par la suppression et les champs concernés par les critères.
➢ Transformer la requête sélection en requête action en cliquant sur le bouton Suppression, dans le groupe Type de requête.
➢ Une ligne Supprimer apparait où on ajoute l’expression de la modification pour le(s) champ(s) concerné(s). Les valeurs pour cette ligne sont A partir de et Où. A partir de identifie la table où seront supprimés les enregistrements et Où identifie les champs pour lesquels il y aura un critère.
21
Exemple
: Dans notre BD « Gestion des commandes », on veut supprimer les commandes, du client de code B300, faites au cours des mois de juin et juillet de l’année 2018.Cliquez sur le bouton d’exécution pour lancer la requête, et vérifiez que le résultat est conforme à ce que vous attendez avant de cliquer sur Oui.
Mode QBE
: Créer une requête sélection qui contient les champs à supprimer avec les critères correspondants.Transformer la ensuite en cliquant sur le bouton Suppression :
22
Mode SQL
DELETE Commandes.*
FROM Commandes
WHERE CodeClient = "B300" And Month([DateCmd]) In (6,7) And Year([DateCmd]) = 2018;
Une fois exécutée Access supprimera toutes les lignes qui répondent aux critères.
23
Requête analyse croisée
Une requête d'analyse croisée est l'équivalent du tableau croisé dynamique dans Excel. Elle permet de répondre à des questions du type « qui a commandé combien de quoi ? », et retourne le résultat sous forme d'un tableau comportant des champs en ligne et en colonne, avec, dans chaque case la réponse à la question.
Qui Qui
Quoi Combien Combien
Quoi Combien Combien
La seule restriction par rapport à Excel est que dans Access, on ne peut avoir qu'un champ de regroupement par colonne.
Entête des colonnes Entête des
lignes
24
Pour créer une requête analyse croisée, on procède par :
− Créer une requête sélection en introduisant les tables nécessaires.
− Transformer la requête en requête d'analyse croisée en allant dans le groupe « Type de Requête » et en choisissant « Analyse croisée ».
− Une nouvelle ligne « Analyse » apparaît dans la requête. Indiquer dans cette ligne, si le champ choisi va être l'en-tête des colonnes, l'en-tête des lignes ou la valeur contenue dans les cases du tableau.
− L’opération pour les en-têtes est toujours « Regroupement ».
Alors que l’opération pour les valeurs des cases dépend de ce qu’on cherche : somme, moyenne, compte, etc.
25
Exemple 1
: Dans la BD « Gestion des commandes », on souhaite créer une requête analyse croisée permettant de calculer pour chaque ville, la quantité totale commandée par les clients, pour chaque produit identifié par sa désignation. Chaque désignation d’un produit doit être affichée dans une seule colonne et chaque ville doit être placée dans une seule ligne.Pour ce faire, créer une requête sélection en ajoutant les 4 tables : « Clients », « DétailsCommande », « Commandes » et
« Produits », et la convertir en requête analyse croisée .
On introduit la table Commandes pour relier les tables Clients et DétailsCommande.
Choisir ensuite l’Opération « Somme » pour la colonne
« Quantité » puisqu’on cherche la quantité totale, et valeur pour l’Analyse.
26
Résultats de la requête analyse croisée
27
Mode SQL
TRANSFORM Sum(Quantité) SELECT Ville
FROM Clients, Commandes, DétailsCommande, Produits Where Clients.CodeClient = Commandes.CodeClient And Commandes.NumCmd = DétailsCommande.NumCmd And Produits.Ref = DétailsCommande.Ref
GROUP By Ville PIVOT Desig ;
Une requête analyse croisée commence par la clause TRANSFORM suivie par l’opération choisie, suivie par la requête sélection, ensuite on ajoute Group by pour le champ qui sera entête de colonne et la clause PIVOT suivi du champ qui sera entête de ligne.
28
Exemple 2 :
Dans notre BD « Gestion des commandes », on veut calculer les quantités totales mensuelles commandées pour chaque produit au cours du premier semestre des années 2018 et 2019. Les mois doivent être affichés en colonne et par lettres alphabétiques et les produits doivent être affichés par leur désignation en ordre croissant :
29
Mode SQL
TRANSFORM Sum(Quantité) AS [Quantité Totale]
SELECT Desig As Désignation
From Commandes, DétailsCommande, Produits
Where (Commandes.NumCmd = DétailsCommande.NumCmd And Produits.Ref = DétailsCommande.Ref) And Month([DateCmd])
<= 6 And Year([DateCmd]) In (2018,2019) GROUP By Desig
ORDER By Desig
PIVOT Format([DateCmd],"mmmm") ;
30
Créer en mode QBE et SQL :
1. Une requête mise à jour paramétrée permettant de modifier la ville d’un client dont le nom et le prénom sont des paramètres.
2. Une requête suppression paramétrée permettant de saisir le nom et le prénom du client et de supprimer les commandes de ce client.
3. Une requête analyse croisée permettant d’afficher le nombre de commandes faites annuellement par client. Le nom et le prénom d’un client doivent être placés dans une seule ligne.