Está en la página 1de 2

Université Lille 1 - Master Sciences et Technologies - Mentions GSI et ASE Bases de Données Relationnelles

Travaux Pratiques de Bases de Données : ACCESS

1. Tables.
 Créer une nouvelle base et y importer la table Employés de la base de données Les Comptoirs
 Ouvrir la table Employés en mode création (structure) puis en mode feuille de données
 Ajouter l'employée : Oderie, Agathe, Représentant(e), Mme, 31-mars-71, 10-févr-01, 8 rue Nationale, Lille, ,
59000, (33) 3 20 43 43 43, , , Buchanan Steven
2. Requêtes.
 Extraire successivement les employés :
- se prénommant Laura
- dont le nom commence par un D
- embauchés avant le 1er janvier 1993
- embauchés en 1992
- représentant(e)s n'habitant pas les Etats-Unis
 Afficher, en trois requêtes successives, les différents pays d'origine des employés, le nombre d'employés par
pays, ainsi que le nombre d'employés habitant les États-Unis.
 Afficher à quel âge ont été embauchés les employés puis, grâce à la fonction DMIN(), les nom et prénom de
l'employé le plus jeune à sa date d'embauche.
 Retrouver les employés ayant été embauchés à un âge inférieur à celui donné par l'utilisateur.
3. Relations.
 Créer une nouvelle table "Commandes des employés" comportant les champs suivants :
- Numéro commande (NuméroAuto) (Clé primaire)
- Employé (Numérique, entier long)
- Date de commande (Date/Heure)
- Date limite de livraison (Date/Heure)
- Date d'envoi (Date/Heure)
- Frais de port (Monétaire)
 Lier la table Commandes de la base de données Les Comptoirs.
 Créer une requête Ajout pour ajouter tous les enregistrements de la table Commandes à la table Commandes
des employés, en faisant la correspondance des champs suivante :
N° employé -> Employé, Date commande->Date de commande, À livrer avant->Date limite livraison, Date
envoi->Date d'envoi, Port->Frais de port
 Supprimer la liaison à la table Commandes
 Créer une relation 1..plusieurs entre le champ N°Employé de la table Employés et le champ Employé de la
table Commandes des employés, en appliquant l'intégrité référentielle. Ajouter une commande à cette
dernière table : l'employé doit effectivement exister dans la table des employés.
 Modifier la table Commandes des employés pour pouvoir saisir le numéro de l'employé grâce à une liste
déroulante proposant les nom et prénom de tous les employés.
 Créer une requête affichant le nombre de commandes passées pour chaque catégorie d'employés, puis une
autre affichant le nombre de commandes passées par chaque "équipe" (en affichant la fonction du supérieur).

1/2
Université Lille 1 - Master Sciences et Technologies - Mentions GSI et ASE Bases de Données Relationnelles

 Créer une requête pour convertir en euros les frais de port de la table Commandes des employés, et une autre
pour supprimer les commandes d'un employé dont le nom est fourni par l'utilisateur.
 Créer une requête qui récapitule le nombre de commandes passées chaque mois par chaque employé (en
affichant le mois en toutes lettres). A partir de cette dernière, créer une requête qui génère une table
récapitulative de la moyenne du nombre mensuel de commandes (avec 2 décimales) par employé et par an.
Pour formuler ces requêtes, on utilisera les fonctions FORMAT(), MONTH() et YEAR().
4. Formulaires.
 A l'aide de l'assistant de type Formulaire instantané en colonnes, créer un formulaire basé sur la table
Employés. Réarranger celui-ci pour le présenter en 2 colonnes, celle de droite ne comportant que le CV
(champ Notes), agrandi, en bas, et la photo située en haut. Les étiquettes des champs doivent être bien
visibles. Nommer ce formulaire Employés.
 En utilisant un assistant formulaire, créer un formulaire de type feuille de données, basé sur la table
Commandes par employé, et nommé Sous-formulaire Commandes par employé. Y inclure tous les champs
de la table, sauf Employé.
 Créer un nouveau formulaire vierge, basé sur la table Employés, nommé Commandes d'un employé. Ôter le
sélecteur, insérer une étiquette comportant le titre du formulaire, 3 zones de texte liées aux numéro, nom et
prénom des employés, ainsi qu'un sous-formulaire basé sur celui créé en . Modifier les propriétés champ
père et champ fils de ce dernier pour qu'il affiche les commandes passées par l'employé courant du
formulaire principal.
 Copier et coller le formulaire précédent en suffixant un "(2)" à son nom, et faire de même pour le sous-
formulaire. Modifier ces 2 nouveaux formulaires de la façon suivante :
- rendre le formulaire principal indépendant; y supprimer les 3 zones de texte et les remplacer par une zone
de liste modifiable nommée listeEmployés et comportant les n°, noms et prénoms des employés.
- changer la source du sous-formulaire en une requête basée sur la table Commandes des employés et
sélectionnant uniquement les commandes de l'employé choisi dans la listeEmployés.
5. Macros et procédures événementielles.
 Pour actualiser automatiquement le sous-formulaire présentant les commandes des employés, créer une
macro nommée Actualisation et lier cette macro à l'événement Sur changement de la listeEmployés.
 Agrandir la section Pied de formulaire du formulaire Employés et y créer 2 boutons permettant d'atteindre les
enregistrements suivant et précédent, et un 3ème pour fermer le formulaire. Créer une macro pour éviter le
message d'erreur lorsque l'on atteint le premier ou le dernier enregistrement.
 Écrire sous forme de procédures événementielles VBA les actions réalisées en .
ex. pour le bouton suivant : If [N° employé] < DMax("[N° employé]", "Employés") Then DoCmd.GoToRecord , , acNext
Else Beep

6. Modules.
 Créer une nouvelle table nommée Etudiants, comportant 2 champs, N° de type entier long et Nom de type
texte [50].
 Créer une procédure Sub modifierBase() qui renomme la table précédente en Promo, y ajoute un champ
Prénom de type texte[40] et en affiche le nombre de champs dans une boîte de message.
 Importer (manuellement) dans la table Promo les données provenant de la liste d'étudiants contenue dans
Promo.txt.
 Créer un formulaire instantané de type colonnes sur la table, puis écrire une macro ModifierFormulaire() qui
met en gras tous les contrôles de type étiquette de ce formulaire.

2/2