Sie sind auf Seite 1von 31

Travaux Pratiques sous Access: TP1

(Cration d'une base de donnes et ses tables, tablissement des relations entre les tables
et saisie des donnes travers des formulaires)

1/ Crer la base de donnes nomme: BD_gestion_des_commandes


2/ Crer les quatre tables de la base : clients, commandes, produits et lignes
Attribuer les cls ncessaires : clients (cin), commandes (num_cmd), produits (ref)
et lignes (num_cmd et ref)
Table Clients:
Nom du champ
Cin
Nom
Prenom
Ville
Catg

Type de donnes
Texte(20)
Texte(20)
Texte(20)
Texte(20)
Texte(10)

Description
N de la carte d'identit nationale
Nom du client
Prnom du client
Ville du client
Catgorie du client C1, C2 ou C3

Table Commandes:
Nom du champ
Num_cmd
Cin
Date

Type de donnes
Numrique
Texte(20)
Date/Heure

Description
Numro de la commande
Cin : Code client
Date de la commande

Table produits:
Nom du champ
Ref
Desg
Pu

Type de donnes
Texte(20)
Memo
Montaire

Description
Rfrence du produit
Dsignation du produit
Prix unitaire du produit

Table lignes:
Nom du champ
Num_cmd
Ref
q

Type de donnes
Numrique
Texte(20)
Numrique

Description
Numro de la commande
Rfrence du produit
La quantit vendue au client

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 1

3/Etablir les relations entre les tables: relation de type 1 n


Clients
(1)--------(n)
Commandes
Commandes (1)--------(n)
lignes
Produits
(1)--------(n)
lignes

4/Saisir les donnes :


Crez pour chaque table un formulaire de saisie des donnes. Vous devez crer quatre
formulaires. Utilisez pour cela, la cration dun formulaire laide de lassistant :
frmclients, frmcommandes, frmproduits et frmlignes_commandes
Table clients :
cin
nom
A100
amani
B200
sellami
C300
asmour
D400
tounsi
E500
kalami
F600
alami
G700
Mounir
H800
amine

prnom
mohamed
amine
jalil
mostafa
samira
sanaa
hamid
soufiane

ville
casablanca
rabat
agadir
casablanca
fes
casablanca
casablnca
rabat

catgorie
C1
C1
C3
C2
C3
C2
C1
C2

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 2

Table commandes :
Numro de

Table produits :
Rfrence du
PRD01
PRD02
PRD03
PRD04
PRD05

cin
1 A100
2 A100
3 A100
4 B200
5 B200
6 B200
7 C300
8 C300
9 D400
10 E500
11 F600
12 F600
13 G700
14 H800

date

Dsignation du
Claviers
Ecrans
Souris
haut-parleurs
imprimantes

Prix unitaire

01/01/04
01/02/04
01/03/04
15/04/04
15/05/04
15/06/04
10/07/04
25/09/04
10/10/04
25/10/04
11/11/04
12/12/04
15/12/04
25/12/04

Table lignes :
Numro de commande
Rfrence du
1 PRD01
1 PRD02
2 PRD02
2 PRD03
3 PRD04
4 PRD04
5 PRD04
6 PRD05
7 PRD05
8 PRD01
9 PRD01
10 PRD01
11 PRD02
11 PRD04
12 PRD03
12 PRD05
13 PRD05
14 PRD03

CHARANI ETTAIBI professeur universitaire la FSJESM

250
700
100
100
1200
Quantit
10
2
5
20
30
15
20
10
20
5
5
1
3
2
25
10
5
6

Page 3

Travaux Pratiques sous Access: TP2


(Manipulation des requtes de slection)
La Base de donnes: Gestion_des_commandes
Donner les requtes: (Utiliser les mthodes QBE et SQL)
1- Afficher les Noms et prnoms

des clients.

QBE :

Rsultat :

SQL :
SELECT nom, prenom
FROM clients;
2- Afficher le numro, le nom, le prnom et la ville de chaque client. Avec le nom et le
prnom dans une seule colonne et le rsultat tri par ordre croissant sur le nom et prnom.
QBE :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 4

SQL :
SELECT cin, [nom] & " " & [prenom] as [Nom et prnom], ville
FROM clients
ORDER BY [nom] & " " & [prenom] ASC;
3- Afficher les clients de la ville Casablanca.
QBE :

SQL :
SELECT cin, nom, ville
FROM clients
WHERE ville="casablanca";

4- Afficher toutes les commandes dont la quantit est suprieure 25.


QBE :

SQL :
SELECT num_cmd, ref, q
FROM lignes
WHERE q>=25;

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 5

5- Afficher toutes les lignes de commandes dont la rfrence du produit est PRD03 et dont la
quantit est suprieure ou gale 20.

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 6

QBE

SQL :
SELECT num_cmd, ref, q
FROM lignes
WHERE (ref="PRD03") AND (q>=20);
6- Afficher toutes les lignes de commandes dont la rfrence du produit est PRD03 ou dont
la quantit est suprieure 20.
QBE :

SQL :
SELECT num_cmd, ref, q
FROM lignes
WHERE (ref="PRD03") OR (q>=20);

7- Afficher toutes les lignes de commandes dont la rfrence du produit est PRD03 et dont la
quantit est suprieure 20, ou alors le numro de commande >5
QBE :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 7

SQL :
SELECT num_cmd, ref, q
FROM lignes
WHERE ((ref="PRD03") AND (q>=20))or (num_cmd>5);
8- Afficher les commandes dont le numro est compris entre 3 et 10.
QBE : faon1

QBE : faon2

QBE : faon3

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 8

SQL:
Manire1:
SELECT num_cmd, date
FROM commandes
where (num_cmd>=3) AND (num_cmd<=10);
Manire2:
SELECT num_cmd, date
FROM commandes
where num_cmd between 3 AND 10;
9- Afficher les clients de la ville Casablanca et rabat.
QBE : Manire1

QBE : Manire2

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 9

QBE : Manire3

SQL :
Manire1:
SELECT cin, nom, ville
FROM clients
WHERE (ville="casablanca") OR (ville="rabat");
Manire2:
SELECT cin, nom, ville
FROM clients
WHERE ville in ("casablanca","rabat");
10- Afficher les clients dont les noms commencent par A.
QBE :

SQL :
SELECT cin, nom, ville
FROM clients
WHERE nom like "A*";
11- Afficher les clients dont les noms ne commencent pas par A.
QBE :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 10

SQL :
SELECT cin, nom, ville
FROM clients
WHERE nom not like "A*";
12- Afficher la liste trie par le nom (dcroisant) des clients de la ville Casa ou Casablanca.
QBE :

SQL :
SELECT cin, nom, ville
FROM clients
WHERE ville like "casa*"
ORDER BY nom DESC;
13- Afficher le numro, le nom, le prnom et la ville des clients dont le nom commence par
S , le prnom contient la lettre M et la ville est casa ou rabat :
QBE :

SQL :
SELECT cin, nom, ville
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 11

FROM clients
WHERE ((nom like "s*") and (prenom like "*m*")) and ((ville like "casa*") or
(ville="rabat"))

14- Afficher le numro, le nom et la ville des clients dont le nom ne commence pas par S
et la ville est Casa, Rabat, Mohammedia ou Fs :
QBE :

SQL :
SELECT cin, nom, ville
FROM clients
WHERE (nom not like "s*")
ville="mohammedia" or ville="Fes"))

and (ville comme "casa*" or

ville="rabat" or

15- Afficher le numro, le nom et la ville des clients de casa, rabat et Fs:
Dont le nom :
Ne commence pas par S pour les clients de casa.
Commence par A pour les clients de rabat.
Qui commence par A et se termine par e pour les clients de Fes.
QBE :

SQL :
SELECT cin, nom, ville
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 12

FROM clients
WHERE ((nom not like "s*") and (ville like"casa*"))
or
((nom like "A*")and (ville="rabat"))
or
((nom like "A*e") and (ville="Fes"))

Manipulation de champ de type DATE :


16- Afficher le numro et la date des commandes qui sont ralises aprs le 15 janvier
2008.
QBE :

SQL :
SELECT num_cmd, date
FROM commandes
WHERE date>=#01/15/2008#;
17- Afficher le numro et la date des commandes qui sont ralises entre les dates :
10/01/2008 et 15/06/2008.
QBE :

Entre #10/01/2008# Et #15/06/2008#


SQL :
SELECT num_cmd, date
FROM commandes
WHERE (date>=#01/10/2008#) AND (date<=#/06/15/2008#);
SQL :
SELECT num_cmd, date
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 13

FROM commandes
WHERE date between #01/10/2008#)AND #/06/15/2008#;
18- Afficher le numro et la date des commandes faites au cours de lanne 2008(utiliser
la fonction anne (date))
QBE :

SQL :
SELECT num_cmd, Date, Year([date]) AS Anne
FROM commandes
WHERE Year([date])=2008;
19- Afficher le numro et la date des commandes qui sont ralises avant le 15 mai au
cours de lanne 2008.
QBE :

SQL:
SELECT num_cmd, Date, Year([date]) AS Anne
FROM commandes
WHERE (date<=#05/15/2008#) AND
(Year([date])=2008);
20- Afficher le numro et la date des commandes faites au cours de lanne 2008 dans
les mois de Mars, mai ou juin (utiliser la fonction mois (date))
QBE :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 14

In(3 ;5 ;6)

"mars" ou "mai" ou "juin")


SQL :
SELECT num_cmd, Date, Year([date]) AS anne, Month([date]) AS mois
FROM commandes
WHERE (Year([date])=2008) AND (Month([date])=3 Or
Month([date])=5 Or Month([date])=6);
SQL :
SELECT num_cmd, Date, Year([date]) AS anne,
Format([date],"mmmm") AS mois
FROM commandes
WHERE (Year([date])=2008) AND
(Format([date],"mmmm") In ("mars","mai","juin")));
21- Afficher le numro et la date des commandes faites au premier de chaque mois au
cours de lanne 2008(utiliser la fonction jour (date))
QBE :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 15

SQL :
SELECT num_cmd, Date, Year([date]) AS anne, Day([date]) AS jour
FROM commandes
WHERE (Year([date])=2008) AND (Day([date])=1);
21b- Afficher le numro et la date des commandes faites au dernier jour de chaque
mois au cours de lanne 2008(utiliser la fonction jour (date))
QBE :

SQL :
SELECT num_cmd, Date, Day([date]) AS jour, Month([date]) AS mois, Year([date]) AS
anne
FROM commandes
WHERE ((Day([date])=29) AND ((Month([date]))=2) AND
(Year([date])=2008))
OR
((Day([date])=30) AND (Month([date]) In (4,6,9,11)) AND
(Year([date])=2008))
OR
((Day([date])=31) AND (Month([date]) In (1,3,5,7,8,10,12))
AND (Year([date])=2008));
22- Afficher le numro et la date des commandes faites dans le mois courant (utiliser la
fonction mois (date ())) (N.B. Date () renvoie la date systme)

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 16

SQL :
23- Afficher le numro, la date et la dure des commandes en nombre danne (aaaa),
trimestre (t), mois (m), semaine(e), jour (j), heure (h), minutes (n) et secondes(s)
Utiliser la fonction DiffDate("format";[Date];Date())
Exemple : Si le format est aaaa alors la fonction renvoie le nombre dannes

SQL :
SELECT num_cmd, Date, DateDiff("yyyy",[date],Date()) AS dure
FROM commandes;

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 17

Travaux Pratiques sous Access: TP3


(Manipulation des requtes paramtres, avec jointures et Requtes avec
oprations) :
1- Requte paramtre :
Un paramtre est une variable dont le nom diffre des noms des diffrents champs de
la BD et dont la valeur sera saisie au moment de lexcution de la requte. Un
paramtre peut tre dfini soit dans la zone Champ ou dans la zone Critre
dune requte.
Une requte paramtre est une requte o on a dfinie un ou plusieurs paramtres.
Exemples :
1- Afficher les clients dune ville dont le nom est un paramtre :

A lexcution de cette requte, Access affiche la bote de dialogue suivante :

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 18

SQL :
SELECT cin, nom, ville
FROM clients
WHERE ville=[villex];

2-Afficher les commandes dont la quantit est infrieur ou gale une valeur spcifier
par lutilisateur.
QBE :

SQL :
SELECT num_cmd, ref,q
FROM lignes
WHERE q<=[qunatitex ];
3- Afficher les commandes qui sont ralises dans une priode dterminer par
lutilisateur.

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 19

SQL :
SELECT num_cmd, date
FROM commandes
WHERE date between [date1] and [date2];

2-Requte avec jointure:


Une requte avec jointure est une requte qui exploite plusieurs tables la fois.
Exemples :
1-Afficher le cin et le nom des clients de Casablanca qui ont ralis des commandes
avant 2009.
QBE :

SQL :
Manire1:
SELECT clients.cin, clients.nom, clients.ville, commandes.num_cmd, commandes.Date
FROM clients INNER JOIN commandes ON clients.cin = commandes.cin
WHERE (clients.ville="casablanca") AND (commandes.Date<#1/1/2009#);
Manire2:
SELECT x.cin, x.nom, x.ville, y.num_cmd, y.Date
FROM clients as x, commandes as y
WHERE (x.cin = y.cin) and (x.ville="casablanca") AND (y.Date<#1/1/2009#);
2-Afficher le cin et le nom et la ville des clients de catgorie C1 qui ont ralis des
commandes dont la quantit dpasse 20.
QBE :

SQL :
Manire1:
SELECT clients.cin, clients.nom, clients.ville, clients.catg, commandes.num_cmd,
lignes.q
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 20

FROM (clients INNER JOIN commandes ON clients.cin = commandes.cin) INNER


JOIN lignes ON commandes.num_cmd = lignes.num_cmd
WHERE (clients.catg="C1") AND (lignes.q>20);
Manire2:
SELECT x.cin, x.nom, x.ville, x.catg, y.num_cmd, z.q
FROM clients as x, commandes as y, lignes as z
WHERE (x.cin=y.cin) and (y.num_cmd = y.num_cmd) and(x.catg="C1") AND (z.q>20);
3-Afficher le cin et le nom des clients de Casablanca qui ont command des produits
dont le prix unitaire dpasse 240 DHS.

QBE :

SQL :
Manire1:
SELECT clients.cin, clients.nom, clients.ville, commandes.num_cmd, lignes.ref,
produits.pu
FROM produits INNER JOIN ((clients INNER JOIN commandes ON clients.cin =
commandes.cin) INNER JOIN lignes ON commandes.num_cmd = lignes.num_cmd) ON
produits.ref = lignes.ref
WHERE (clients.ville="casablanca") AND (produits.pu>240);

Manire2:
SELECT x.cin, x.nom, x.ville, y.num_cmd, z.ref, w.pu
FROM clients as x,commandes as y, lignes as z, produits as w
WHERE (x.cin=y.cin)
and (y.num_cmd=z.num_cmd)
and (w.ref=z.ref)
(x.ville="casablanca") AND (w.pu>240);

and

3- Requtes avec oprations


Pour formuler une opration dans une requte, il suffit de cliquer sur
de la barre
doutils une fois la requte est en mode cration. Une ligne opration sajoute alors
parmi les autres lignes de linterface de la requte.
Les oprations possibles :
Regroupement des donnes par un ou plusieurs champs
Compte : nombre des occurrences des donnes dans la base
Somme
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 21

Moyenne
Max
Min
Expression : formule gnrale
O : aucune opration
var , ecartType, dernier et premier

Exemples :
1- Afficher le nombre total des clients :
QBE :

SQL :
SELECT count(cin) as effectif_Global_clients
FROM Clients;
2- Afficher le nombre de clients par ville :
QBE :

SQL :
SELECT clients.ville, Count(clients.cin) AS Nombre_clients
FROM clients
GROUP BY clients.ville;
3- Afficher la quantit totale, la quantit moyenne, la quantit maximale et la
quantit minimale de chaque commande.
QBE :

SQL :
CHARANI ETTAIBI professeur universitaire la FSJESM

Page 22

SELECT lignes.num_cmd,
Sum(lignes.q) AS Total_Qte,
Avg(lignes.q) AS Moyenne_Qte,
Min(lignes.q) AS Qte_maximale,
Max(lignes.q) AS Qte_minimale
FROM lignes
GROUP BY lignes.num_cmd;
4- Afficher la quantit moyenne, la quantit maximale et la quantit minimale de
chaque commande dans les 25 jours avant la date daujourdhui.
QBE :

SQL :
Manire1:
SELECT commandes.num_cmd, commandes.Date, Sum(lignes.q) AS Total_Qte,
Avg(lignes.q) AS Moyenne_Qte
FROM commandes INNER JOIN lignes ON commandes.num_cmd =
lignes.num_cmd
GROUP BY commandes.num_cmd, commandes.Date
HAVING (((commandes.Date)>=Date()-25));
Manire2:
SELECT commandes.num_cmd, commandes.Date, Sum(lignes.q) AS Total_Qte,
Avg(lignes.q) AS Moyenne_Qte
FROM commandes INNER JOIN lignes ON commandes.num_cmd =
lignes.num_cmd
WHERE DateDiff("d",[date],Date())<=25
GROUP BY commandes.num_cmd, commandes.Date;
5- Pour chaque commande, afficher le numro, la date, le montant hors taxe HT, la
TVA et le montant TTC avec taux de TVA fix 20%.

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 23

QBE :

SQL :
SELECT commandes.num_cmd, commandes.Date, Sum([q]*[pu]) AS HT,
Sum([q]*[pu]*0.2) AS TVA, Sum([q]*[pu]*1.2) AS TTC
FROM produits INNER JOIN (commandes INNER JOIN lignes ON
commandes.num_cmd = lignes.num_cmd) ON produits.ref = lignes.ref
GROUP BY commandes.num_cmd, commandes.Date;

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 24

Travaux Pratiques sous Access: TP4


(Manipulation des Requtes analyse croise et requtes de mise jour
Modification et suppression)

Requtes analyse croise


Une requte Analyse croise permet de calculer et de restructurer des donnes afin
d'en faciliter l'analyse. Elle permet deffectuer des calculs (somme, moyenne, compte
etc.) pour des donnes regroupes en lignes ou en colonnes.
Exemples :
1- Pour chaque ville, calculer la quantit total commande, par les clients de cette
ville et ceci pour chaque produit.

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 25

SQL :
TRANSFORM Sum(lignes.q) AS SommeDeq--->opration (Valeur)

SELECT produits.ref--->(entte de ligne)


FROM produits INNER JOIN ((clients INNER JOIN commandes ON clients.cin =
commandes.cin) INNER JOIN lignes ON commandes.num_cmd = lignes.num_cmd)
ON produits.ref = lignes.ref
GROUP BY produits.ref

PIVOT clients.ville;---->(entte de colonne)

Chaque dsignation dun produit doit tre affiche dans une seule colonne et
chaque ville doit tre place dans une seule ligne :
Etapes :
1. Crer une nouvelle requte en introduisant
Commandes , Lignes commandes et produits.

les

tables : Clients ,

2. En mode Cration de requte, cliquez sur le bouton Analyse Croise (


) ou slectionnez la commande Analyse croise du menu Requte. Une
nouvelle ligne nomme Analyse apparat dans la grille.
3. Dans la ligne Analyse de la grille de la requte, choisir en tte de ligne
pour le champ Ville
et en tte de colonne pour le champ
dsignation . Tout champ dfini en ligne ou en colonne doit avoir
Regroupement dans la zone Opration. Choisir Valeur pour le champ
Quantit et dfinir lopration somme pour ce champ dans la ligne
Opration

2- Afficher les quantits totales mensuelles (janvier, fvrier.dcembre)


commandes pour chaque produit : (utiliser la fonction format (date ; mmmm )

QBE :Manire1

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 26

QBE :Manire2

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 27

SQL :
TRANSFORM Sum(lignes.q) AS SommeDeq --->opration (Valeur)

SELECT Format([date],"mmmm") AS mois --->(entte de ligne)


FROM produits INNER JOIN (commandes INNER JOIN lignes ON

commandes.num_cmd = lignes.num_cmd) ON produits.ref =

lignes.ref
GROUP BY Format([date],"mmmm"), Month([date])
ORDER BY Month([date])

PIVOT produits.desg; ---->(entte de colonne)

3- Afficher les quantits totales mensuelles commandes pour chaque produit au


cours du premier semestre de lanne 2008.

SQL :
TRANSFORM Sum(lignes.q) AS SommeDeq

SELECT Format([date],"mmmm") AS mois


CHARANI ETTAIBI professeur universitaire la FSJESM

Page 28

FROM produits INNER JOIN (commandes INNER JOIN lignes ON

commandes.num_cmd = lignes.num_cmd) ON produits.ref =

lignes.ref
WHERE (Month([date]) Between 1 And 6) AND (Year([date])=2008)

GROUP BY Format([date],"mmmm"), Month([date]), Year([date])


ORDER BY Month([date])

PIVOT produits.desg;

Requtes de mise jour et suppression


Une requte de mise jour permet de mettre jour des donnes dans une table.
Soit en modifiant les donnes de cette table, soit en les supprimant.
Exemples :
2- Mettre jour les ttva 19% pour les produits dont le prix unitaire est >=400
DHS.
QBE :

SQL :
UPDATE produits
SET ttva = 19
WHERE pu>=400;

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 29

UPDATE produits
SET produits.ttva = 19
WHERE produits.pu>=400));

2- Augmentez de 1 dh les prix unitaires des produits dont le taux de TVA est 19%.

QBE :

SQL :
UPDATE produits
SET produits.pu = [pu]+1
WHERE produits.ttva=19;
3- Supprimer les clients de la ville safi.
QBE :

SQL :
DELETE clients.ville
FROM clients
WHERE clients.ville="safi";

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 30

CHARANI ETTAIBI professeur universitaire la FSJESM

Page 31

Das könnte Ihnen auch gefallen