802.4 Les sous-formulaires

a. Un exemple simple

Nous allons créer un formulaire basé sur la table tb_etudiant qui affiche simultanément la liste des étudiants et la liste des notes.

La liste des notes se trouvera dans le sous-formulaire mais les deux formulaires seront liés par la relation entre les deux tables par l'attribut id_et.

Les notes seront donc filtrées selon l'étudiant sélectionné

Créer un formulaire à l'aide de l'assistant

1

Sélection de champ

Tous les attributs de la table tb_etudiant

2

Paramétrer un sous-formulaire

Ajouter un sous-formulaire basé sur une relation existante : la relation avec la table tb_note est la seule disponible

3

Ajouter des champs au sous-formulaire

Tous les champs de la table tb_note

4

Obtenir des champs joints

Cette étape n'apparaît pas car le champ joint pour le formulaire et le sous-formulaire est obligatoirement l'attribut id_et des deux tables

5-6-7-8

On peut laisser les propositions par défaut

RemarqueExécution

Lorsque l'on sélectionne un étudiant, on voit bien que seules les notes de l'identifiant sélectionné sont affichées dans le sous-formulaire

Amélioration du formulaire

Voici l'objectif à atteindre (exemple réalisé avec libreoffice : on peut essayer de s'en approcher sous access)

On manipule les colonnes via leur menu contextuel (clic droit sur le colonne)

1. Masquer les colonnes indésirables

2. Dans le sous-formulaire des notes, insérez une colonne avec un contrôle de type Zone de liste.

3. La colonne est nommée par défaut Zone de liste 1 (Clic droit option colonne pour accéder à ses propriétés)

4. Modifiez les propriétés comme dans la fiche 5c : vous avez construit le même contrôle Zone de liste pour sélectionner la matière

SimulationAfficher les moyennes et les notes

Vous avez déjà construit une requête qui calcule la moyenne pour chaque étudiant

Construisez une requête basée sur la table tb_note qui affiche la matière en clair (rq_802_4b******)

Construisez une formulaire (frm_802_4c) basé sur la requête rq_802_4b qui affiche en sous-formulaire les données de la requête.

Le résultat à atteindre est présenté ci-dessous