Introduction à Microsoft Access et bases de données
Introduction à Microsoft Access et bases de données
Introduction
Les 24 h de cours consacrées aux bases de données en magistère 2ième année ne sont pas suffisantes pour assurer
un enseignement exhaustif sur le sujet. J’ai donc choisit de concentrer mon enseignement sur l’utilisation de
l’outil Access en laissant volontairement de coté toute la partie modélisation des données.
Le but de ce cours est donc de vous familiariser avec l’environnement Access, de vous apprendre à utilisez les
différents composants (requêtes, formulaires, états, procédures VB) que Access met à notre disposition pour
stocker, manipuler et restituer des données. Nous utiliserons le mode SQL du générateur de requête pour vous
initier à SQL.
Nous travaillerons sur des bases dont le modèle de données à été préalablement définit, et je m’appuierais sur ces
bases pour introduire les notions de modèles de données et vous permettre d’appréhender le processus de
modélisation. Mais, je le répète, la partie analyse, conception et validation du modèle de donnée ne sera pas
abordée en détail.
!
" #
#
#
# $ #
% & # % # "
#
'% # % # #
"
( " " $
& # ) #
* " #$ + $
% # $" $% " ,
& # % & " &
# % & - )
#
,! mdb
&
#
'% # % #
" #
"
# %
# "
&
& $
8
#
#
#
# 9
:
$
+
%
& #
#
" /0 " 11
234( 55 6(
# 3 " #
# #
( " , " # #
# &%
! % #$ #
# " # # "
% # % "" # #
" # #
# #
# " # &%
*
7 ," $ %$ " %$ $ $
#
#$ #
$
.
Créez la structure de la table étudiant :
Une liste
déroulante affiche
les types de
champs possibles.
Le type texte
permet définir des
champs caractères
Texte Texte et nombres, notamment des noms, des adresses, des numéros de téléphone et
des codes postaux. Un champ Texte peut contenir jusqu'à 255 caractères.
Mémo Texte et nombres plus longs, notamment des commentaires ou des explications. Un
champ Mémo peut contenir jusqu'à 64 000 caractères.
Numérique Données numériques sur lesquelles vous souhaitez effectuer des calculs
mathématiques, à l'exception de tout calcul monétaire. A l'aide de la propriété Taille du
champ (FieldSize), définissez le type de données Numérique spécifique (voir page
suivante)
Date/Heure Permet d'enregistrer toute donnée relative à une Date et/ou une Heure. Vous pouvez
créer votre propre format d'affichage ou choisir un des nombreux formats disponibles.
Monétaire Valeurs monétaires. N'utilisez pas le type de données Numérique pour les valeurs
monétaires car la partie décimale du résultat des calculs risquerait d'être arrondie. Le
nombre de chiffres après la virgule du type de données Monétaire est fixe.
;
Pour les champs de type numérique, vous devez choisir un sous-type
numérique à partir de la liste déroulante suivante
Octet Stocke les nombres compris entre 0 et 255 (sans fraction). Ce paramètre
occupe 1 octet
Entier Stocke les nombres compris entre -32 768 et 32 767 (sans fraction). Ce
paramètre occupe 2 octets.
Entier long Stocke les nombres compris entre -2 147 483 648 et 2 147 483 647 (sans
fraction). Ce paramètre occupe 4 octets.
Réel simple Stocke les nombres dont la précision atteint six chiffres et qui sont compris
entre -3,402823E38 et 3,402823E38. Ce paramètre occupe 4 octets.
Réel double (Paramètre par défaut). Stocke les nombres dont la précision atteint dix
chiffres et qui sont compris entre -1,79769313486232E308 et
1,79769313486232E308. Ce paramètre occupe 8 octets.
<
Créez la troisième table suivante :
Pour définir ou modifier la clé primaire, sélectionnez le(s) champ(s) que vous
souhaitez définir comme clé primaire. Pour sélectionner un seul champ,
cliquez sur le sélecteur de ligne. Pour sélectionner plusieurs champs,
maintenez la touche CTRL enfoncée et cliquez sur le sélecteur de ligne de
chaque champ.
La clé primaire de la table LIVRE est le champ isbn (isbn veut dire International
Sérial Book Number) C'est une combinaison de chiffre permettant d'identifier
n'importe quel livre au niveau international.
=
Vous pouvez à tout moment passer du mode création (icône ) au mode feuille de donnée (icône )
Le menu fenêtre vous permet de revenir sur la fenetre Base de donnée de départ.
TABLE ETUDIANT :
TABLE AUTEUR :
0
TABLE LIVRE :
? @4 @A 2 A233 3 2 B 35 25@ 6 ?@ ?3 AB C? 55 2? ( ? 6D
E % 8 % # % %
" :
6 # #
'! #
. # #
,F G* &
; @ " 8#
# % % # % # ":
2 *
"# # #H & # $
5@(I $
. #H & #
'F # "# # $
; 5@(I #
#
>
LES REQUETES
Une requête est un moyen d’extraire, à partir des tables, les données qui nous intéressent.
Exemple : nous allons écrire la requête qui liste les livres dont le prix est > 100 F
/
Le table LIVRE apparaît dans la fenêtre requête
1
Sélectionnez les champs de la table livre et faites les glisser jusqu’aux colonnes de la requête (pointez sur un
champ, click bouton gauche et tout en restant cliqué, amenez le champ jusqu' à la colonne)
Vous pouvez sélectionner plusieurs champs en laissant la touche MAJ enfoncée et en cliquant dans les champs
qui vous intéressent puis en les faire glisser en une seule fois dans la grille de la requête.
Cliquez dans l’icône exécution ou dans le menu Requête – Exécuter pour voir le résultat de la requête
Comme pour les tables, vous pouvez soit par les icônes, soit par le menu, basculer à tout moment du mode
création au mode exécution
icône du mode
exécution de requête
C'
est dans la zone critère que vous indiquez à Microsoft Access les enregistrements que vous souhaitez afficher.
Vous pouvez saisir des critères pour un ou plusieurs champs dans votre requête.
Zone critère de
votre requête
Exemples d'
expression Critère
Utilisation des Fonctions de regroupement Domaine dans la zone critères d'une requête.
Il existe 7 fonctions domaines permettant de faire des calculs ou de retrouver des valeurs dans une table et vous
pouvez utiliser ces fonctions soit comme expression soit dans la zone en-tête de colonne d' une requête, soit dans
la zone critère d'une requête.
1. Fonction CpteDom (DCount)
2. Fonction MoyDom (DAvg)
3. Fonction RechDom (DLookup)
4. Fonction SomDom (DSum)
5. Fonctions EcartyDom (DStDev), EcartyPDom (DstDevP)
6. Fonctions MinDom (DMin), MaxDom (DMax)
7. Fonctions VarDom (DVar), VarPDom (DVarP)
Ces 7 fonctions ont un nom en Français et un nom en Anglais que vous pouvez utiliser indifféremment et
possèdent toutes la même syntaxe avec 3 arguments séparés par le caractère point virgule : ;
champ, table et critère doivent être des chaînes de caractères limités par les double guillemets. L'
argument critère
n'
est pas obligatoire.
Exemples :
Remarque :
Champ, table et critères doivent être des chaînes de caractères et être délimités par les doubles guillemets. Les
nom de champs composés doivent être délimités par des crochets : [code postal] , [date de pret] ect...
D'autre part, lorsque le critère porte sur une chaîne de caractère, vous devez utiliser le caractère quote : ' pour
délimiter la valeur chaîne servant de critère.
;
L'argument critère doit être une
Exemple : chaîne de caractère. Vous devez le
délimiter avec des double
guillemets : "
MinDom("prix";"livres";"[code editeur]='NRF'")
code éditeur est un nom de champ NRF est une chaîne de caractère
composé, vous devez le délimiter servant de valeur de critère. Vous devez
Exemple
avec d'
utilisation
les crochets [ ] d'
une fonction la délimiter avec des caractères quote
simple : '
Exemple d' utilisation d'une fonction de regroupement dans la zone critère d' une requête :
isbn et le titre des livres dont le prix est égal au plus petit prix des livres édités par NRF
En préalable à toute
exécution de la requête,
Access remplace la fonction
MinDom de la zone critère
par la valeur renvoyée par
cette fonction (MinDom scrute
les prix des livres édités par
NRF et renvoie le plus petit
d'entre eux). Lorsque ce
remplacement est effectué,
Access lance l'exécution de la
requête.
<
LES RELATIONS
Les relations entre table sont des règles que vous imposez aux données. Ces règles permettent de
garantir que :
1. les relations entre les enregistrements dans les tables liées sont et resteront valides.
2. l'utilisateur n'
effacez pas ou ne modifiez pas par erreur des données liées.
Vous entrez dans le champ clé externe de la table liée, une valeur qui n'
existe pas dans la clé primaire
de la table primaire. Toutefois, vous pouvez entrer une valeur de type Null dans la clé externe pour
indiquer que les enregistrements ne sont pas liés.
Exemple :
Impossible de saisir dans le champ code éditeur de la table livre un code éditeur qui n'
existe pas dans la table éditeur
Vous effacez un enregistrement de la table primaire pour lequel il existe des enregistrements
correspondants dans une table liée.
Exemple :
Impossible d'
effacer un auteur s'
il existe des enregistrements de la table livre-auteur pour cet auteur.
Vous changer une valeur clé primaire dans la table primaire pour un enregistrement qui possède des
enregistrements liés.
Exemple :
Impossible de changer un n° d'
étudiant s'
il existe des prêts pour cet étudiant.
2 - Cliquez
dans le bouton
Afficher table
=
Cliquez dans le champ NUMERO de la table ETUDIANT, glissez en restant cliqué jusqu' au champ
NUMERO de la table PRET, et lâchez le bouton gauche lorsque vous êtes sur le champ NUMERO de
la table PRÊT.
Access établit une relation entre les 2 tables sur les champs utilisés et ouvre la fenêtre suivante
0
Requêtes avec jointure de table
Notez qu’il y à 11 Etudiants et 7 Notes et que seuls les Etudiant n° 10001 ; 10002 et 20001 possèdent des notes.
>
Voici le résultat de la requête :
/
UTILISATION DES FORMULAIRES
Un formulaire est un écran de saisie et d’affichage d’information. Un formulaire peut être ou ne pas être associé à
une table ou une requête.
Lorsqu’un formulaire est associé à une table ou une requête, il permet à l' utilisateur d'ajouter, de modifier, de
supprimer et de visualiser les enregistrements présents dans les différentes tables de la base de données.
Généralement, on crée un formulaire par table, mais on peut être amené à créer des formulaires mettant en jeu
plusieurs table. Une manière simple de créer un formulaire est de le faire générer automatiquement par ACCESS
à partir d'
une table. ACCESS crée alors autant de zone de saisie dans le formulaire qu' il y a de champs dans la
table. ACCESS utilise le terme contrôle pour désigner une zone de saisie dans un formulaire. Chaque contrôle
possède un certain nombre de propriétés que nous pouvons modifier et arranger à notre convenance.
Choisissez NOUVEAU et Selectionnez la table pour laquelle vous voulez créer le formulaire
ONGLET
FORMULAIRE
1
ACCESS affiche la fenêtre suivante :
Cliquez dans l'icône
(Table) pour faire
apparaître les champs de
la table AUTEUR
Conservons pour l'instant les propriétés par défaut définies par ACCESS pour les contrôles générés
et passons en mode utilisation du formulaire ainsi crée en cliquant dans l'icône formulaire
Nous prendrons comme exemple le Formulaire Ecran d’enregistrement d’un prêt étudiant. Ce formulaire doit
permettre de mettre à jour la table Pret c’est à dire permettre de créer, supprimer, modifier un prêt.
Pour fabriquer un Formulaire Écran affichant toutes ces informations, le plus simple est de créer une requête
joignant la table Pret avec les tables Livre et Etudiant puis de créer le formulaire à partir de cette requête.
Cette requête affiche les 6 champs que nous voulons faire apparaître sur le formulaire
ISBN ; N° ETUDIANT ; DATE PRET et DATE RETOUR sont issus de la table pret
NOM est issu de la table Etudiant
TITRE de la table Livre
1. Cliquez dans l’onglet de la fenêtre base de
Etape 2. Création du Formulaire Ecran donnée puis choisissez Nouveau
.
Vous pouvez modifier individuellement les propriétés de chaque contrôle ou modifier les propriétés du groupe de
contrôle sélectionné.
Par exemple, pour modifier la police par défaut des 6 contrôles de ce formulaire :
Selectionnez
les controles et
cliquez dans
l’icône propriété
pour faire
apparaitre les
propriété
Changez la
taille de la
police, (par ex.)
ou une
quelconque des
propriétés du
groupe de
contrôle
sélectionné
La modification
de propriété que
vous effectuez
s’applique à
tous les
controles
sélectionnés.
Poignées de
dimensionnement
;
Déplacez les contrôles et modifiez les propriétés de manière à ce que le formulaire est cet aspect :
Remplacement des contrôles ISBN et N° ETUDIANT par des controles liste déroulante.
<
Source contrôle:
C’est ici que vous indiquez le
champ de la table associé à ce
contrôle.
Choisissez N° ETUDIANT dans la
liste.
Contenu :
Choisissez la table Etudiant dans
la liste déroulante
ou bien
Choisissez une requête
ou bien
Tapez une instruction select (par
ex : Select [Nom] from etudiant
where...
.
Colonne liée :
Cette propriété est importante.
Votre liste déroulante affiche 3
colonnes. Il faut donc indiquer à
Access quelle est la colonne à
utiliser pour remplir le champ N°
ETUDIANT.
Vous devez faire la même chose pour le champ liste déroulante ISBN
=
pour les 2 etiquettes et
Il existe un autre moyen de créer un formulaire prêt qui affiche les champs nom de l'
étudiant et titre du livre sans
passer par une requête liant la table prêt avec les tables etudiant et livre.
Pour créer un tel formulaire, procédez de la manière suivante
2. Remplacez les contôle n° Etudiant et isbn par des liste déroulante comme précédemment
0
La fonction RechDom insérée dans la propriété source contrôle du
contrôle [texte8] renvoie le titre du livre dont l’isbn est egal au contenu du
contrôle [champ8]. En définissant la propriété Source contrôle de ce
contrôle de la manière indiquée, le contrôle [texte8] affiche le titre du
livre dont l'isbn à été saisi dans le contrôle [champ8].
4. Synchroniser les champs liste déroulante isbn et n° étudiant avec les champs textes titre du livre et nom de
l'
étudiant
Pour effectuer cette synchronisation, vous devez indiquer à Access de reafficher le contenu des contrôles titre du
livre [texte8] et nom de l’étudiant [texte10] lorsque la valeur des contrôles zone de liste déroulante isbn [champ8]
ou zone de liste déroulante n° étudiant [champ18] changent.
? .
L #
# .
& ""
2M
Access ouvre une fenetre Visual Basic Editor et génére une procédure champ18_Change().
>
Toutes les instructions que vous placerez dans cette procédure seront exécutée chaque fois que le contenu du
contrôle [champ18] changera.
L’instruction permettant de « rafraîchir » le contrôle [texte10] s’écrit simplement [Link]
[Link]
Pour synchroniser le contrôle titre du livre [texte8] avec le contrôle zone de liste modifiable [champ8] vous
devez procéder de la même manière, c’est à dire ajouter une instruction [Link] dans la procédure liée
à l’évenement sur changement du contrôle [champ8].
/
FORMULAIRE / SOUS FORMULAIRE
L'objet sous-formulaire (icône de la boite d' outil en mode création de formulaire) permet d' insérer un
formulaire à l'
intérieur d'
un formulaire. La configuration Formulaire / Sous-Formulaire s' emploie la plupart du
temps pour saisir des données de type entête-détail. Exemple classique : Commande - Lignes de Commande : les
informations générales concernant la commande (n° client, date de commande) sont saisies dans le formulaire, les
informations spécifique à chaque ligne de commande (n° article, quantité) sont saisie dans le sous formulaire. Les
informations apparaissant dans le sous formulaire sont synchronisées avec celles du formulaire.
.1
Etape 2 : création du formulaire principal, basé sur la table étudiant auquel on ajoute un contrôle sous formulaire
Ajout du
contrôle sous
formulaire
.
Lorsqu'on passe d'
un étudiant à l'
autre, seul les prêts correspondant à l'
étudiant en cours apparaissent dans le sous
formulaire.
Amélioration.
1- On veut afficher le titre du livre emprunté
2- Si on ajoute un prêt dans le sous formulaire, on veut pouvoir choisir l'
isbn du livre dans une liste déroulante
Solution : modifier le sous formulaire prêt en le basant sur une requête liant prêt et livre (pour pouvoir accéder au
titre). Remplacer le champ isbn de ce formulaire par un champ liste déroulante basée sur livre.
.
Le nouveau formulaire prêt :
L'origine source de ce
contrôle est le champ ISBN
de la requête de la page
précédente.
Le formulaire étudiant :
..
La colonne isbn est une liste
déroulante.
Vous pouvez ajouter et supprimer des
prêts à travers le sous formulaire prêt.
.;
UTILISATION DES REQUETES ACTIONS
On appelle requêtes actions des requêtes qui modifient les données de la base, par oppositions aux requêtes
sélection qui permettent d'
afficher le contenu des données sans modifier ces données. Il existe 4 types de requête
action :
"" #
$ %% " +
4. requête SUPPRESSION "# #% # +
& !
( + L
& @ GB @ 5
%% % # #
# #
.<
B # 9 ' & # #
# #
'F !" # + & % @ + !"
# % # + " # #
# #
.=
requête MISE A JOUR
Voici une requête mise à jour qui augmente de 20 % le prix de tous les livres édités par NRF.
.0
requête AJOUT
Cette requête fonctionne comme une requête Création de table avec la différence qu' il n'
y a pas de table crée. Les
données sélectionnées sont ajoutées à une table existante qu'
il faut évidement choisir parmi la liste des tables de
la base avant d'
exécuter la requête.
requêtes SUPPRESSION
Elles permettent de supprimer les enregistrements d'une table qui satisfont les contraintes fixées. Voici une
requête suppression qui supprime de la table prêt tous les prêts antérieur au 01 janvier 96 qui ont leurs date de
retour différante de Null.
.>
REQUETE AVEC OPERATION
On peut remarquer que cette requête fournira le même résultat quelque soit le champ de la table prêt sur lequel on
compte (a condition qu' il n'y ai aucun champ de la table prêt à Null ). Pour ne lister que les étudiant qui ont
emprunté plus de 3 fois, il suffit de mettre la condition > 3 dans la zone critère de la colonne avec laquelle on
compte.
Exemple 2
Prix moyen de vente moyen des livres pour les auteurs présents dans la base. On regroupe sur le champ
[Link] et on utilise la fonction Moyenne sur le champ [Link]
# "
#" # # #
&% %
% $ N "
&% # #
"
+ O #,
#
./
Requête Analyse croisée
Une requête Analyse croisée vous permet de résumer des données dans un format tableau.
Exemples :
1. A partir de la table ETUDIANT, connaître par ville et par section le nombre d’étudiants inscrits
2. A partir des tables AUTEURS, LIVAUT, LIVRE et EDITEUR, connaître le nombre d’auteur édités par
chaque éditeur pour chaque nationalité
Ajoutez les tables, insérez les champs et définissez des critères exactement comme si vous créiez une requête
Sélection afin de sélectionner les enregistrements qui doivent figurer dans la requête Analyse croisée.
Exemple 1 :
Quand la requête est affichée en mode Création, cliquez sur le bouton « Requête Analyse croisée » de la barre
d'
outils ou choisissez Requête - Analyse croisée.
Microsoft Access affiche les lignes « Opération » et « analyse » dans la grille d'
interrogation.
Pour le(s) champ(s) dont vous désirez faire apparaître les valeurs sous forme de lignes, cliquez sur la ligne
« analyse », puis sélectionnez « ligne » dans la zone de liste déroulante.
;1
Choisissez ligne pour
le champs devant être
en ligne
Vous devez conserver le champ « Regroupement » par défaut de la ligne « Opération » pour ces champs.
Pour le champ dont vous souhaitez faire apparaître les valeurs en tête de colonne, cliquez sur la ligne « analyse »,
puis sélectionnez « colonne ».
Choisissez colonne
pour le champ en
colonne
Vous devez aussi conserver le champ « Regroupement » par défaut de la ligne « Opération » pour ces champs.
Pour le champ dont vous souhaitez utiliser les valeurs dans l'
analyse croisée, cliquez sur la ligne « analyse», puis
sélectionnez « Valeur ».
Choisissez
Valeur pour le
champ de calcul
à l'intersection
de la ligne et de
la colonne
Sur la ligne « Regroupement» de ce champ, sélectionnez le type de fonction de regroupement désiré pour
l'
analyse croisée (par exemple Somme, Moyenne ou Compte). Dans notre exemple, nous allons utiliser Compte
pour compter le nombre d’étudiant par ville et par section.
;
Une fois le champ valeur choisi, vous
devez indiquer le type de calcul à
effectuer à partir de ce champ.
Si vous spécifiez des critères, sélectionnez Où sur la ligne «Regroupement » du champ désiré, puis entrez une
expression sur la ligne « Critère ». Vous pouvez, par exemple, afficher le total des ventes pour les articles de
certaines catégories.
La ligne « analyse » doit rester vide pour les champs « Critères ».
Pour effectuer une requête analyse croisée sur plusieurs tables, procéder exactement de la même manière en
oubliant pas de joindre les tables dans la requête.
Exemple 2 :
Remarque
Si vous insérez un champ dans la requête, mais choisissez (non affiché) dans la cellule « Analyse » et
« Regroupement » dans la cellule « Opération », Microsoft Access regroupe sur ce champ en tant que Tête de
ligne, mais n'
affiche pas cette ligne dans l'
instantané.
;
UTILISATION D’UN FORMULAIRE ASSOCIE A UNE REQUÊTE.
Vous pouvez créer des formulaires sans nécessairement les associer à une table ou une requête (dans ce cas, la
propriété origine source du formulaire est vide). Avec ces formulaires sans table associée, vous pouvez saisir des
données dans des controles et utiliser ces données pour lancer des calcul, effectuer des mises à jour ou extraire et
afficher des résultats.
Dans l’exemple ci-dessous, nous allons utiliser des valeurs saisies dans un formulaire comme critère de sélection
dans une requête.
Il s'
agit d'effectuer le traitement suivant :
Saisir une année dans un formulaire à l’écran puis archiver tout les prêts étudiants correspondant à l’année
choisie qui possèdent une date de retour de prêt différante de NULL. Archiver consiste à ajouter les prêts
satisfaisant les critères dans une table archives puis à les supprimer de la table prêts.
2. Créer une requête action AJOUT pour ajouter dans la table archives les prêts sélectionnés à partir de l’année
saisie dans le formulaire
3. Créer une requête action SUPP pour supprimer de la table prêts les prêts sélectionnés à partir de l’année
saisie dans le formulaire
4. Créer une macro qui exécute les deux requêtes action AJOUT et SUPP et activer cette macro lorsqu’on
double clique dans le bouton OK du formulaire
de la barre
d’outil.
Champ
indépendant.
Pour insérer un
champ de saisie
indépendant dans un
formulaire, utiliser le
utilisez le bouton
;.
Remarquez les propriétés du champ de saisie indépendant
Condition de validation.
La zone texte saisie doit être
supérieure au texte « 1993 »
voici le requête :
Condition 1 :
On compare
l’année de la date
de prêt - que l’on
à transformé en
chaine de
caractère à l’aide
de la fonction
Cchaîne() - avec
le contenu du
contrôle Champ1
Condition 2 :
Vérifier que la
date de retour de
prêt n’est pas
égale à NULL
La requête action SUPP est absolument identique à la requête AJOUT (même critères de sélection)
alors que le requête AJOUT est une requête d’ajout (Requete -Ajout... du menu ou icône )
;;
3. Création d’une Macro qui lance les deux requêtes AJOUT et SUPP.
Onglet Macro
Cette Macro doit activer les requêtes AJOUT et SUPP. L’activation d’une requête se réalise par l’action
OuvrirRequete
;<
En cliquant dans ce
bouton vous ouvrez une
fenêtre dans laquelle
apparaissent, par ordre
alphabétique, toutes les
action exécutable dans
une Macro
Choisissez
OuvrirRequête dans la
liste des actions.
Evidement, il faut ajouter une deuxième action OuvrirRequête dans cette Macro, avec SUPP pour nom de la
requête à ouvrir dans la zone Nom requête
;=
Lorsque l’utilisateur doubleclique dans le bouton
Cliquez pour faire apparaître la liste des macros que vous avez définie et choisissez celle à activer
Pour terminer, associez l’événement double clic du bouton formulaire à une macro qui ferme le
formulaire
Remarque :
Tout ce qui peut être fait avec une macro peut être fait avec une event procédure (procédure Visual Basic)
Exemple : Macro : OuvrirRequête Visual Basic : Docmd OpenForm "nom du formulaire".
Les procédures visual basic offre en outre la possibilité d e pouvoir utiliser des structures de contrôle (if
then…else…endif ; for…next ; do while (until) … loop ; case…endcase). Pour tous les traitements qui
nécessitent de la programmation, prenez l'habitude d' utiliser les events procédures plutôt que les macros.
;0
CREATION D'ETATS
Access permet de créer des états de sortie sur imprimante de manière relativement simple.
Un état est généralement basé sur le contenu d' une table ou d'
une requête.
Le design d'
un état est très proche du design d'
un formulaire. On peut ajouter dans l'état une combinaison
quelconque des champs de la table/requête associée, ainsi que tout champ calculé à partir de ces champs. On peut
également insérer des champs indépendants affichant de l'information extraites et/ou calculées de la base.
Création d'
un état simple :
;>
Sélectionnez
les champs que
vous souhaitez
insérer dans
l'état et faites
les glisser dans
la zone détail
(comme dans
un formulaire).
Access imprime les champs insérés selon le format créé dans l'état,
pour chacune des lignes de la table ou de la requête.
;/
CREATION D'UN ETAT EN COLONNES
<1
CREATION D'UN ETAT EN COLONNE AVEC REGROUPEMENT
Access offre la possibilité de regrouper les lignes d' un état sur la valeur d'
un champ. Pour illustrer cette
possibilité, nous allons grouper les billets par n° de vol.
Voici l'
état correspondant :
Sur l'
exemple çi-dessus, on a choisi de faire apparaître l' entête et le pieds de groupe (propriété entête et pied de
groupe à oui dans la fenêtre Trier/regrouper).
Le champ numvol a été inséré dans l' entête et le pieds de groupe.
Remarquez également une zone texte dont le source contrôle est la fonction CpteDom qui permet d' afficher le
nombre de billet du vol
=CpteDom("[nompas]";"[Billet]";"[numvol]=reports![listepas].[Champ5]")
[Champ5] étant le nom de la zone de texte du pied de groupe contenant le champ numvol (on aurait pu aussi
bien utiliser le nom de la zone texte de l'
entête de groupe contenant le n° de vol)
Voir l'
état sur la page suivante
<
<
Exemple complet de formulaire permettant de saisir un nom de passager et d’éditer le
billet de ce passager ou la liste complète des passagers du vol.
Ce formulaire aura l’aspect suivant :
& ! # % $ #
. #
" #
- & F# 37
# % %
% 7
#
#
," #
# $ %$ " %$
% 7 #
$ &
" , " #
, +
# " "
Proriétes du contrôle M1
Propriétes du contrôle M2
<.
Détail de la requête origine source du contrôle M2
Propriétes du contrôle M3
<;
Synchronisation des controles M1 M2 et M3
<<
Détail de l’état
(,
" " # + @ 18 # " # # @ 1 : "
% 7 #
Pour pouvoir éditer l' ensemble de ces information, il faut commencer par créer une requête associant les tables
billets, vol, aéroports et compagnie puis baser l'
état sur la requête.
Voici la requête :
Pour terminer, créeons un formulaire permettant de choisir un n° de vol dans une liste déroulant puis un billet de ce vol
et permettant d'
editer le billet correspondant.
<>
Voici le formulaire. Les deux boutons éditent sur click la liste des passager du vol choisi ou le billet du passager choisi
dans le vol.
1. La liste déroulante N° de place est synchronisée avec le n° de vol choisi dans la liste déroulante N° de vol
2. Les champs Nom et Prénom du passagé sont synchronisé avec le n° de place choisi dans la liste déroulante N° de
place
L'
origine source de cette liste déroulante est la requêtte suivante :
Les propriétés de la liste déroulante N° de Vol L'aspect de la liste déroulante en mode utilisation
</
=1
Synchronisation de la liste déroulante N° de Vol et N° de Place, utilisation des événements.
Qu'est-ce qu'un événement ?
Un événement est une action spécifique qui se produit dans ou en présence d'un objet précis. Microsoft Access est en mesure
de répondre à plusieurs types d'événements : clics de souris, modification de données, ouverture ou fermeture de formulaires,
etc…. Les événements résultent généralement d'une action de l'utilisateur.
L'utilisation d'une procédure événementielle vous permet d'ajouter votre propre réponse à un événement se produisant dans un
formulaire, un état ou un contrôle.
1. Docmd Requery "Champ1" force le recalcul de la requête source de la liste déroulante N° de Billet . Lorsqu'
on
cliquera dans la liste déroulante N° de Billet, on ne verra que les billets du n° de vol choisi dans la liste déroulante
N° de Vol. Chaque fois que l' on change de vol dans la liste déroulante N° de Vol, il faut recalculer la requête sur
laquelle est basée la liste déroulante N° de billet afin de synchroniser les 2 listes déroulantes, et c'
est précisement ce
que fait l'
instruction Docmd Requery "Champ1" de la procédure déclanchée sur l' évenement Après
MAJ de la liste déroulante N° de Vol. Champ1 est le l' objet liste déroulante N° de Billet
Etiquette T1
On veut que le texte du l'étiquette T1 affiche le nouveau n° de vol chaque fois
que l'on change de n° de vol dans la liste déroulante N° de Vol.
Dans le formulaire [formulaire1], le nom de l'objet liste déroulante N° de vol est
[champ0].
Int([Champ0]) contient la partie entière du n° de vol sélectionné dans la liste
déroulante N° de Vol
En mettant la valeur
"imprimer la liste des passagers du vol " & Int([champ0])
dans la propriété caption de l'étiquette T1, on affiche le n° de vol dans le texte
de l'étiquette à chaque changement de n° de vol puisque cette instruction est
Liste déroulante N° de Place (nom deexécutée
l'objet dans
danslelaformulaire : [Champ1])sur l'evenement Après MAJ de la
procédure déclanchée
liste déroulante N° de Vol
=
Cette liste déroulante est basée sur la requête suivante :
Synchronisation des champs nom et prénom passager ([Champ6] et [Champ8]) et du texte de l'
étiquette T2 à partir de la
liste déroulante N° de place
Zones de texte nom et prénom passager (nom des l'objets dans le formulaire : [Champ6] et [Champ8])
=
BOUTON
!" !
? # $ #
# # "# % ' F# P $ # "" % $
" $ " #9 B# % #
# "" % # #% 9 # # #
# #% % Q
% " "" % #
# '!" ! % #$ ! " "" % ##
+ !" " $# ' # "" % ! # ## "
2 "" % # F# % #
A "" % # F# % # # F#$
# % % P) # " ' F#
' F#
( F# % # 8 !% # % # #
F# " #R F# %+% % # :
$# " " %
#
' *
8 % # :S 8 % # :S 8 % # :S 8 F#:S
8 F#:
# S
% P) " F#
=.
( "" % # # F# % "P#
"" % & ' ( & '*
( % # ! ' ! # ! ' # % #$
#
'"" % "" % # & %
F#$% "# F# % 8 #
"" % & ' ( & ': ( " '
"" % &
- & ! # ! ' #
% #*
) * S) S+ S S) ,
('
"" % # ! 9 " #
# % # ## # % #$ -"
"# F# % "" % 9 # "" %
# # "" % # # % #$% "" %
F# % # # "" - ) . # # % #
%9 $#'
"" % % # %%" % 9 #
'"" % # !
*
) * S) S+ S S) , S# !
S
2 "" % # % % #
A "" % # % % # #
% $% P) # " ' % $ % % 8:
! 8: " # %
' % % P) " %
( % ! % # $ % "
% $ % $# " '
"" % #
% # *
( #
' % # " ""% " '
+ "
#
' % $# " " % # # F#
"" % 9 # "" % & ' ( & ' % # $ %% *
• % # % # " ' F# *
• F# *
/ 8 F# :S 8 F# :S 8 F# :S 8 F# :
• % *
' %
( % % $# " " % # % #
& L # % % # *
# S # S (#
# #
'"" % # $# " " % # (#
# L # ' &"
=;
" ' # %
( # % 8 : % # " # % P
#
' ' F#$# " '"" % *
8 % # :S 8 F#:S 8 F#:S + 8 % # :S
(+ 8 % # :
2 "" % # % # # % #
A "" % % # # % % # $#
"# % # # #
# # " ' % #
2 % ' % #
( % # $# " '
"" % % # *
S S S S
F# % # ' $#
'"" % # % # $
9 #
'"" % % #
'"" %
( % % # $# " '
"" % % # *
! S$ S%
F# % # ' $#
'"" % # % # 9
#
'"" % ! % #
'"" % $
' % # P
( # ! % # $#
'"" % $ # %
% # #
'"" % # !9% % # *
$ 8 % # :S 8 % # :
('
"" % $ ' % # # # % #
+ $#
'"" % $ # #
L # $ % # # ""% + - 0 . 9 # %9
$ + ' #
? "" % "# % #
")
P $%+% % # !" 2 E % # 82 E %:
5 # " % #
( "" % % # F# # "# % # %
% # #% " ! % #$# % # #
%9 $# " '
"" % *
8 % # :S 8 % # :S 8 % # :S 8 % # :S
8 % # :S 8 F#:S 8 F#:
% "# " ' F#$# " " % & ' ( & ' F#
% # #'
"" % # F#
5 # % #
=<
( % # % # $# % # %
& " # % # # $# " " % % # F# 8 #
$ $ $ : # "" % % #
$#
'"" % '! # % # $ #' ' % #
# "# & "" % % # % # #
A # %+% % 9 $# % % # % # $ % #
% "& " 9 # % # ('
"" % $ '! #
% # $ # % ' % # # "# & "" % $ #
% # #( " " % # F# $# % # # % # #
#
' *
T" % F# % # 8 # # :
T" % F# % # 8
- % # F# % # :
. T" % % # 8 # $ % :
; T" % % #
2 "" % # & # #
( "" % # # % # F# # -
# & - & # % # # F# "(
"" % % # $ % # F#
% # # - # # $# # #
% # $ F#$ # # "# % # $
F#
T" % #
( - #
U& & # ' F# 8 # # #
'
5 & 8 M -: #
' M- - &:$# "
'
"" % *
) * S) S) ,
( - & # #
U& - & ) 9
3 B
$# " " % ) * $) $ ) ,
- & 3 B #% " $# " " % ) * )
R 8
) * $) $) * $) $
:) '
P #
U& # &V #
'"" % ) ,
- & 3 B # #
U & $# " " % ) * )
, % " & 3 B$#
'"" % ) *
) '
P #
U& # & V $#
'"" % ) ,
) * S) S S) ,
• % F# *
• F# *
# S S) S) ,
==
T" %
( - #
U& # # # #
F# % # $# " '
"" % # F# *
# * S# , S
F# # F# $# "
'
"" % *
• % F# *
# S
• F# *
S S# * S# , S
"# % # F#$#
'"" %
% # #
'"" % F#
# * S# , S S$ ! S# ,
( # # %% $ "" % '
"" %
('
"" % # ' % # $' ' F# #
"# # # # % # $# # F# "" % "
"" % "" % " "" %
T" % "
( " #
'% % # # $ # # % "#
+ $# " '"" % " *
S S% S$
( # !" $#
'"" % $ # % % #
#
'"" % # !9% % # *
$ 8
" :S 8
" :
('
"" % $ ' " # # #
'" +
' $#
'"" % $ # # L
# $ % # # ""% + - 0 . %9 $
+ ' #
T" % '
"
8
" :S 8
" :S% 8 '
" :S+ 8 '
" :S% 8
" :
S$ 8" :
=0
A # $# " " % 9 # % % #
'"" %
+ *
• ('
"" % # ' P "" #
% #
'"
• ('
"" % % ' &" #
'"
• ('
"" % 9 # % % #
'% "" % +
#" # #
' #
'" % %"
=>
1 23 !
#9% *
? # # P "# % # # ' % # %% 9 "#
+
!% #*
% # # # # "" " #
%" , # # "#
P <1 # #
%% # " 9 + # # "# "
# # ( # %%" ( $# %% %%"
%% 1$# + %%" W + W
$# & % %" # %%"
3 %" $# # # %%" #
P ) $# #
# " # "# # "#
% P5 E# & % J# # "K # # #
% (
# % ( # # X& +
B C( + *
( 5 # YE@2 # XG @ % ( 8
J %" K
:Z 5
E % # *
# " # % # $ 9 "#
J " "" % #
#K #
'"" % #H %%
%% 1
Private Sub Commande0_Click()
If Not PrepareList([Link], [Link]) Then
MsgBox "impossible de lancer la requête"
Else
[Link] "requête1"
End If
End Sub
=/
" % # *
%% " [
% # *
B3 ( 8 3% $ ( 3 % :5&
6 !W% # # # + W
#
A % 2 C -W + W
B
( # % % # # % ##
% # P# % ' & %
# # +
A % # *
( % ( P # # P % ## $ %
# & # "# " ## A9 ' # ##
" # P# # "$ # # 5 P# + "# #
# #$ # ' "" " $# # E # " P
# +
' % " % # %"& P "
+ $ # ) # %+% % # # %+%
01
Créer un menu personnalisé et remplacer le menu et le formulaire de démarrage de Access par un menu et un
formulaire spécifique.
Base : Gestion de la bibliothèque. On souhaite afficher le menu suivant à l'
ouverture de la base :
0
Cliquez dans l'onglet Commande
Dans la partie gauche de la fenêtre
apparaissent les catégories de
commande et dans la partie droite le
détail des commandes de la catégories
sélectionnée à gauche.
0
Cliquez dans Nouveau Menu avec le bouton
gauche de la souris, restez cliqué, faite
glisser Nouveau Menu jusqu'à la barre et
lâchez le bouton gauche lorsque Nouveau
menu est dans la barre.
0.
Dans l'exemple çi-contre, le menu Edition possède 3
sous menus :
Editions Etudiants
Edition Liste Prêts
Edition Fond Bibliothèque
EPAPE 2. Choisir la barre de menu créée comme barre de menu par défaut de la base
0;
2 – Fermez votre barre de menu, activez le
menu Outils puis le sous menu Démarrage.
0<
CREATION DE MENU PERSONNALISE ACCESS 2
6 Pas de paramètres
0=
Supposons que le nouveau menu comporte 3 options : Saisie - Edition - Utilitaires ; et les sous menus suivants
00
2- Comment masquer / reafficher les barres d'outils
Manuellement :
Choisissez
Affichage Option
dans le menu
Positionnez
l'option barre
d'outil à Oui
ou Non
Avec les touches de raccourcis, et sans utiliser la souris, on peut activer le Menu, puis Affichage, puis Option,
puis atteindre l'option Barre d'outil par défaut disponible , puis mettre cette option à Non et enfin
sortir. Pour cela il faut
1. Taper ALT + A pour activer le menu Affichage
2. Taper O pour activer le sous menu Option
3. Appuyer 3 fois sur flèche vers le bas pour atteindre l'
option Barre d'outil par défaut disponible
4. Taper N pour passer cette option à Non
0>
5. Taper Enter pour sortir
La fonction EnvoiTouches permet d' activer les fonctions Access (en particulier les commandes de menu) de la
même manière qu'avec les touches de raccourcis.
puis préciser dans la zone Touche, la séquence des touches à envoyer pour mettre l'
option
Barre d'outil par défaut disponible à Non
La séquence de touche :
% A O {DOWN 3} N {ENTER}
Pour spécifier des touches utilisées conjointement avec les touches MAJ, CTRL et ALT, on doit faire précéder le
code de la touche par : + pour MAJ ; ^ pour CTRL ; % pour ALT
Pour plus de précision sur l'envoie de touche, voir l'instruction EnvoiTouches (Sendkey en Visual Basic) dans
l'
aide
Manière n° 2 : Définir une fonction dans un module et exécuter cette fonction dans la macro AutoExec.
Commencez par écrire une fonction qui masque la barre d' outil Pour écrire cette fonction vous devez créer un
module et ajouter le code de la fonction à l'
intérieur du module
Module
Nouveau
0/
Function MasquerBarreOutils ()
SendKeys "%AO" + "{DOWN 3}" + "N" + "{DOWN 2}" + "N" + "{ENTER}", True
End Function
SendKeys et l'
instruction Visual Basic correspondant à la commande EnvoiTouches.
Argument de SendKeys : chaîne de caractère contenant le code de touches
Une fois la fonction crée, insérer la commande ExécuterCode dans la macro AutoExec
puis précisez dans la zone Nom fonction le nom de la fonction que vous avez crée (ici MasquerBarreOutils).
>1
LES MODULES VISUAL BASIC
Access offre la possibilité d’écrire des fonctions en visual basic exécutables à partir d’un des objets quelconque
de la base : formulaire, état, requête, ou macro.
Pour écrire un module, cliquez dans l’onglet Module, puis sur nouveau et saisissez votre code. Vous pouvez
également ajouter une nouvelle fonction dans un module existant. La syntaxe et la sémantique des fonctions
Visual Basic Access et absolument identique à celle du Visual Basic Excel. Une fonction doit toujours renvoyer
une valeur.
Voici çi dessous la fonction RefAnSP qui renvoie la valeur de l’indicateur I de la table [catégorie sociaux prof]
pour la commune N et l’année immédiatement inférieure à une année A passée en paramètre. Si il n’existe pas
d’année inférieure à A dans la table, la fonction renvoie Null.
>
Ce code est exécutable n’importe ou dans la base. Par exemple, on peut l’utiliser comme source de donnée dans
un formulaire
>
EXEMPLE DE REQUETES SELECTION
Soit le M.C.D. suivant :
Aeroport
code aeroport
nom
Billet
pays
numplace
1,n 1,n nompas
prenompas
arrivee depart datnaispas
(1,1)
1,1 1,1
Vol passager
numvol
datevol 0,n
1,n heuredep
heurearv 1,1
equipage appareil
1,1
1,n
modele
code_modele
nbplace
constructeur
>.
Vol <=> Compagnie :
Le lien 1:1 ; 1:n planning
Compagnie programmatrice d'un vol donné,
Ensemble des vols programmés par une compagnie donnée.
Compagnie <=>Avion:
Le lien 1:1 ; 1:n proprietaire
Compagnie propriétaite d’un avion donné
Ensemble des avions appartenant à une compagnie donnée
>;
2. Nom et prénom du personnel navigant de qualification ‘Pilote’ appartenant à la compagnie
‘Air France’.
3. Nom et prénom du personnel navigant ayant voyagé le 3-AVR-1994 avec un passager de nom
Mouse et de prénom Mickey.
><
4. Capacité en nombre de place de l'
avion ayant décollé de Paris le 19-DEC-1994 avec un
commandant de bord de nom Dubois.
>=
Avec la base Biblio
Titre des livres edité par l’éditeur de code GRA et dont le prix est supérieur à 50
>0
Liste des livres empruntés par les étudiants
>>
Nom et prénom des étudiant qui ont empruntés Proust et qui sont inscrit dans la section de libellé "2ieme année
sciences economiques" OU "Magistère 1iere année"
@ + 2 "
@ % 7" $ %$ " %
% &% #
# # #
# +8 $ % R % &"
% :
>/