ACCESS : LES SOUS-FORMULAIRES

1-Avant de commencer

Access vous offre plusieurs types de formulaires. Ce cours vous montre comment créer et utiliser un formulaire dans un formulaire. Pour plus d'informations sur les formulaires en général, veuillez vous référer au cours sur les formulaires.

On présume que vous savez comment créer des requêtes qui incluent des champs calculés.

Il est très important que les relations entre les tables soient réalisées pour qu'il y ait un lien entre le formulaire et le sous formulaire sur un champ en commun.

Dans le cas étudié, il s'agit du champ fact_id de la table Facture et du champ fact_id de la table L_Fact_Art.

Les champs de plusieurs tables et requêtes seront requis pour réaliser l'exercice de ce cours.

2-Introduction

Pour vraiment utiliser une base de données, il faut être capable de chercher et d'afficher des données provenant de plusieurs tables. Cela veut souvent dire qu'il faut un formulaire principal, qui inclut les informations générales, avec un ou des sous formulaires pour avoir plus de détails.

L'exercice de ce cours consiste à créer un formulaire pour la facturation de l'entreprise. Pour afficher toutes les informations que ce genre de formulaire contient, il devra contenir un second formulaire qui décrira les items facturés.

Mais avant de pouvoir créer ce formulaire, vous devez avoir effectué les exercices précédents. Ainsi les tables sont créés et possèdent des données. Vos tables sont reliés et vous êtes capable de créer des requêtes avec des champs calculés. Assurez-vous de bien maîtriser ces concepts avant de créer un formulaire qui inclut un sous-formulaire.

La création d'un formulaire de facturation se fait par étapes :

3-Création des requêtes nécessaires

Avant de pouvoir créer le formulaire et un sous-formulaire, il faut déterminer quels seront les champs requis et dans quel formulaire ils vont se retrouver.

Pour la facture, il faut les informations des tables Facture et Client. Il faut aussi ajouter dans le sous-formulaire les informations de la table L_Fact-Art ainsi que la description du produit et de son prix unitaire qui se retrouve dans la table Article.

Vous devez créer deux requêtes: l'une avec les champs requis pour la facture et l'autre sur les items de cette facture. Nous regarderons ensuite comment avoir le total de cette facture.

relations entre les tables
  1. Du menu Créer, sélectionnez le bouton Création de requête bouton requête.
  2. De la liste des tables, sélectionnez les tables Client et Facture.
  3. Cliquez sur le bouton Bouton fermer.
  4. De la liste des champs de la table Facture, sélectionnez tous les champs dans le même ordre.
  5. De la liste des champs de la table Client, sélectionnez les champs cli_nom, cli_adresse, cli_ville et cli_code_postal.
  6. Enregistrez cette requête sous le nom RFacture.
  7. Fermez la requête.
requête Facture-client

Créez une seconde requête.

  1. Du menu Créer, sélectionnez le bouton Création de requête bouton requête.
  2. De la liste des tables, sélectionnez les tables L_Fact-Art et Article.
  3. Cliquez sur le bouton Bouton fermer.
requête RFacture-items

Puisque les relations entre les tables ont déjà été établies, vous devriez voir un lien entre les champs art_id de la table L_Fact-Art et le champ art_id de la table Article. Sinon, il faudra faire la relation entre ces deux champs.

  1. De la liste des champs de la table L_Fact-Art, sélectionnez tous les champs.

Vous pouvez aussi sélectionnez l'astérisque (*) au dessus de la liste des champs. Cela aura l'effet de choisir tous les champs de la table.

  1. De la liste des champs de la table Article, sélectionnez les champs art_nom et art_pu.
  2. Créez un champ calculé STotal: [art_qte]*[art_pu]

N'oubliez pas de mettre les crochets autour du champ art_pu. Access se chargera de mettre les crochets autour de art_qte. Ce champ calculé va donner le total de chacun des items de la facture. On regardera plus loin comment avoir le total de tous les items de la facture.

Les majuscules ne sont pas nécessaires, Access n'est pas sensible à la casse.

  1. Enregistrez cette requête sous le nom RFacture-Items.
  2. Fermez la requête.

4-Création du formulaire

Avant de pouvoir ajouter un sous-formulaire, il faut créer le formulaire principal. Celui-ci affichera les informations générales de la facture. Les informations sur les détails de la facture seront dans le sous-formulaire.

assistant formulaire facture 1
  1. Du menu Créer, sélectionnez le bouton Assistant Formulaires bouton assistant formulaire.
  2. Sélectionnez la source du formulaire qui sera la requête RFacture.
  3. Sélectionnez tous les champs de la requête en appuyant sur le bouton bouton ajouter tous.
  4. Cliquez sur le bouton bouton suivant.
assistant formulaire facture 2

L'assistant constate qu'il peut trier les enregistrements selon la clé primaire cli_id ou par la clé primaire fact_id. Il vous demande par quel champ il doit trier les enregistrements. Pour cet exemple, on veut afficher les informations par facture et non par client.

  1. Sélectionnez par Facture.
  2. Cliquez sur le bouton bouton suivant.
assistant formulaire facture 3

L'assistant vous demande ensuite de choisir le type de présentation des champs.

  1. Sélectionnez l'option Colonne simple.
  2. Cliquez sur le bouton bouton suivant.
assistant formulaire facture4

L'assistant vous demande pour terminer le nom que vous souhaitez donner au formulaire.

  1. Saisissez Facture.
  2. Cliquez sur le bouton bouton terminer.

Voici le résultat :

assistant formulaire facture 5

5-Modification du formulaire

Le formulaire est terminé. Mais il n'y a pas assez d'espace pour le sous-formulaire. La prochaine partie consiste à modifier le formulaire ci-dessus pour y inclure un sous formulaire.

  1. Passez en Mode création en appuyant sur le bouton bouton affichage création.
création formulaire facture1

Au besoin, vous pouvez changer les dimension du formulaire, en plaçant le pointeur sur la bordure du formulaire, puis lorsque le pointeur changera de forme, restez appuyé sur le bouton gauche de la souris et étirez le formulaire vers l'extérieur.

6-Ajouter le sous-formulaire

Il y a maintenant assez d'espace pour voir les items de la facture ainsi que le total. La prochaine partie consiste à créer le sous-formulaire.

  1. Du menu Création, sélectionnez le bouton Sous-Formulaire bouton contrôle sous-formulaire, puis cliquez dans le formulaire.

L'assistant pour les sous-formulaires va vous demander quel sera la source du sous-formulaire. Est-ce une table, une requête ou un formulaire que vous avez déjà préparé.

assistant sous-formulaire1
  1. Sélectionnez l'option Utiliser les tables et les requêtes existantes.
  2. Cliquez sur le bouton bouton suivant.

L'assistant vous demande ensuite quels seront les champs qui seront inclus dans le formulaire.

assistant sous-formulaire2
  1. De la liste des tables et des requêtes, sélectionnez la requête RFacture-Items.
  2. Sélectionnez tous les champs de la requête en appuyant sur le bouton bouton ajouter tous.
  3. Cliquez sur le bouton bouton suivant.

L'assistant vous demande quels seront les champs en commun entre le formulaire et le sous-formulaire.

Pour cet exercice, nous allons laisser Access trouver les champs en communs.

Si cela ne fonctionne pas, vous verrez à la fin comment déterminer la relation père-fils entre le formulaire et le sous-formulaire.

assistant sous-formulaire3
  1. Sélectionnez l'option Choisir à partir d'une liste.

Si vous sélectionnez l'option Les définir moi-même, vous devrez aussi déterminer quels sont les champs en commun entre le formulaire et le sous-formulaire.

assistant sous-formulaire4
  1. Pour le champ en commun du formulaire, sélectionnez le champ fact_id.
  2. Pour le champ en commun du sous-formulaire, sélectionnez le champ fact_id.

Vous aviez le choix entre laisser l'assistant trouver les champ en commun ou les déterminer par vous-même. Le reste des opérations pour terminer le sous-formulaire sont les mêmes.

assistant sous-formulaire5
  1. Cliquez sur le bouton bouton suivant.
  2. Laissez le nom du sous-formulaire à RFacture-Items sous-formulaire.
  3. Cliquez sur le bouton bouton terminer.

Le sous-formulaire est maintenant inclus.

  1. Passez au Mode formulaire en appuyant le bouton bouton affichage mode formulaire.
assistant sous-formulaire6

À moins qu'on ne l'indique autrement, la présentation des données se fait toujours en mode feuille de données comme dans les tables ou les requêtes.

Il se peut qu'une boite de dialogue vous demande une quantité, cliquez simplement sur le bouton OK.

7-Le total de la facture

Le formulaire montre maintenant les informations du formulaire ainsi que les items facturés. Mais il ne montre pas le total de la facture. Il faut ajouter un champ calculé pour le voir. La prochaine partie consiste à ajouter un champ calculé pour voir le total.

  1. Retournez en Mode création en appuyant sur le bouton bouton affichage mode création.
Facture avec sous-formulaire en mode création

Il faut ajouter un champ calculé dans l'en-tête ou le pied de ce sous-formulaire. Pour cet exemple, il sera ajouté dans le pied de formulaire.

Pour agrandir le pied de formulaire agrandir le pied de formulaire :

  1. Placez le pointeur au bas de la barre Pied de formulaire.

Le pointeur devrait changer de forme.

  1. En restant appuyé sur le bouton gauche de la souris, déplacez le pointeur vers le bas.

La zone du pied de formulaire va s'agrandir. Il faut qu'il soit assez grand pour ajouter un champ calculé.

  1. De la barre d'outils, cliquez sur le bouton zone de texte bouton contrôle zone de texte.
  2. Cliquez dans la zone du pied de formulaire.

Un champ vide va apparaître dans le pied de formulaire. Il faut maintenant ajouter la formule pour calculer le total et lui donner un nom significatif.

  1. Cliquez une première fois sur le nouveau champ pour le sélectionner.
  2. Cliquez une seconde fois dans le champ, pour pouvoir écrire la formule requise.
  3. Écrivez la formule suivante : =somme(Stotal).
  4. Cliquez ensuite dans l’étiquette du champ et nommez-la Total :
  5. Appuyez sur la touche touche entrée.

Comme dans Excel, les formules des champs calculés que l'on retrouve dans des formulaires ou des états commencent toujours avec le signe « = ». Cette formule va additionner les valeurs de tous les enregistrements STotal.

Il faut maintenant donner un nom significatif à ce nouveau champ calculé.

zone de texte TotalItems
  1. Placez le pointeur sur le nouveau champ.
  2. Cliquez sur le bouton droit de la souris.
  3. Du menu contextuel, sélectionnez l'option Propriétés.
  4. Changez le contenu de la case Nom à TotalItems.

Puisque ce champ a été placé soit dans l'en-tête ou le pied du formulaire, il va maintenant faire la somme de tous les enregistrements de la table ou de la requête. Si ce même champ avait été placé dans la zone détail, il aurait fait la somme que d'un seul enregistrement. C'est pour cette raison qu'il était important de placer ce champ dans l'en-tête ou le pied du formulaire. Ces zones permettent d'accomplir des opérations sur tous les enregistrements au lieu d'un seul.

8-Ajouter le calcul du sous-formulaire dans le formulaire principal

Dans l'exercice précédent, nous avons ajouté un champ appelé TotalItems qui fait le total de tous les enregistrements. Il suffit maintenant de l'ajouter au formulaire Facture pour afficher le total.

Nous sommes maintenant de retour au formulaire Facture. Il faut ajouter une référence au champ TotalItems dans ce formulaire pour voir le total des items de cette facture.

  1. Ajoutez un champ en dessous du sous-formulaire en appuyant sur le bouton bouton controle zone de texte.
  2. Cliquez avec le bouton droit de la souris sur le nouveau champ.
  3. Du menu contextuel, sélectionnez l'option Propriétés.
  4. Placez le pointeur dans source contrôle.
  5. Cliquez sur le bouton bouton suite activé à la droite de la case.
générateur d'expression

Cela va activer le générateur d'expression. Il faut spécifier à Access l'endroit où se trouve le champ TotalItems. Ce champ se retrouve dans le formulaire RFacture_items sous-formulaire.

  1. Dans la zone de gauche, cliquez sur le dossier Facture, puis RFacture_items sous-formulaire.
  2. Dans la zone Catégories d'expressions, double-cliquez sur le champ TotalItems.
  3. Cliquez sur le bouton bouton OK petit.
  4. Renommez le texte du champ en : Total.
sous-formulaire facture
  1. De la barre d'outils, cliquez sur le bouton bouton affichage formulaire.
  1. Du menu Affichage, sélectionnez l'option Mode formulaire.

Le total est bien là. Mais va-t-il se mettre à jour si on change une valeur ?

  1. Placez le pointeur dans la case quantité de la dernière ligne du sous formulaire.
  2. Changez la quantité vendue de 3 à 4.
  3. Déplacez le pointeur vers le haut.

Le total du formulaire se met à jour lorsque vous changez d'enregistrement.

9-Les relations père-fils

Il est possible que la relation entre le formulaire et le sous-formulaire ne se fasse pas. Mais vous pouvez toujours déterminer quels sont les champs en commun entre les deux tables. Le champ père est un champ qui provient du formulaire principal. Le champ fils est l'un qui se retrouve dans le sous-formulaire.

sous-formulaire propriétés
  1. Sélectionnez le formulaire Facture.
  2. Passez en Mode création en appuyant sur le bouton bouton affichage création.
OU
  1. Du menu Affichage, sélectionnez l'option Mode création.
  2. Sélectionnez le sous-formulaire.
  3. Cliquez sur le bouton droit de la souris.
  4. Du menu contextuel, sélectionnez l'option Propriétés.
OU
  1. De la barre d'outils, Cliquez sur le bouton bouton propriétés.

L'image ci-dessus indique les propriétés du sous-formulaire incluant les cases Champs fils et Champs pères qui indiquent les champs en commun entre le sous-formulaire (fils) et le formulaire principal (père). On doit retrouver des champs en commun entre ces deux pour qu'une relation soit possible.

  1. Assurez-vous que le champ dans Champs fils est fact_id.
  2. Assurez-vous que le champ dans Champs pères est fact_id.
  3. Fermez la fenêtre des propriétés.