IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

Implanter un sous-état dans un état

Image non disponible

Souvent, le besoin se fait sentir d'afficher toutes les données liées à une information « maître » dans un même objet (formulaire ou état). Cet article se propose donc d'expliquer la démarche à suivre pour mettre en place dans un seul état, cette relation de type « un à plusieurs ». Ce tutoriel s'adresse aux débutants. ♪

Article lu   fois.

L'auteur

Profil ProSite personnel

Liens sociaux

Viadeo Twitter Facebook Share on Google+   

I. INTRODUCTION▲

Souvent, le besoin se fait sentir d'afficher toutes les données liées à une information « maître ». Les exemples concrets ne manquent pas : détail d'une facture, détail d'une commande, liste des articles d'un fournisseur, etc.
Je vais donc, au long de ce tutoriel, vous présenter la démarche à suivre pour créer ce genre d'objet sous Access.

II. PRÉSENTATION DU PROJET▲

II-A. Le cahier des charges▲

Pour illustrer ce propos, je vous propose de faire un courrier qui rappelle aux adhérents indélicats la liste des livres empruntés dans notre bibliothèque et qui suite à un oubli ont omis de les rendre à la date prévue.
Dans la liste des ouvrages non rendus, on trouvera :
- le titre du livre ;
- Le nom et le prénom de l'auteur concaténés ;
- la date de l'emprunt ;
- la date de retour prévue ;
- le nombre de jours de retard ;
- l'amende à payer. (on considérera 0.10 € par jour de retard).

À noter que la date de retour prévue est une date calculée par l'application et fait donc partie de la table des emprunts.

Vous trouverez la base de travail à la fin de l'article dans le chapitre « TÉLÉCHARGEMENT ».

II-B. Les tables en jeu▲

Afin de réaliser notre projet, nous utiliserons plusieurs tables :

Nom de la table

Description

Relation

T_Ouvrages

Table qui contient les données de l'ouvrage.

CodeLivre -> Clé Primaire.
CodeAuteur -> Clé étrangère en liaison avec la table T_Auteurs.

T_Auteurs

Table qui contient les caractéristiques des auteurs.

CodeAuteur -> Clé Primaire.

T_Adherents

Table qui contient les informations concernant des adhérents de la bibliothèque.

CodeAdherent -> Clé Primaire.

T_Emprunts

Table qui contient la date d'emprunt, de retour prévue et un champ « Rendu » de type booléen.

CodeLivre - > Clé étrangère en liaison avec la table T_Ouvrages.
CodeAdherent -> Clé étrangère en liaison avec la table T_Adherents.

II-C. Les sources de nos états▲

Chaque état aura sa propre source, mais tous les deux auront un champ commun.
En effet, l'état principal doit nous afficher les coordonnées de notre adhérent et le sous-état doit nous lister les livres non rendus par le même adhérent. Nous retrouverons donc dans chaque requête le champ « CodeAdherent ».

II-C-1. Requête source de l'état principal▲

Image non disponible

Cette requête nous donne la liste des adresses des adhérents concernés. Elle appelle trois remarques :
1) J'ai créé un champ calculé pour concaténer le nom et le prénom de l'adhérent.
Cela permettra de ne manipuler qu'un seul champ au lieu de deux dans l'état ;
2) J'ai créé un champ calculé pour concaténer le code postal et la ville de l'adhérent.
Même raison que ci-dessus ;
3) Le champ DateRetour n'est pas affiché. En effet, la requête m'affiche autant d'enregistrements d'adhérents qu'il y a de livres non rendus.
Il nous faut donc paramétrer les propriétés de la requête pour masquer les doublons.

Image non disponible

Pour modifier les propriétés de la requête :
cliquez droit dans la zone de tables puis cliquez sur la commande « Propriétés » ;
paramétrez la propriété « Valeurs distinctes » sur OUI.

II-C-2. Requête source du sous-état▲

Image non disponible

Cette requête nous donne la liste des ouvrages non rendus à temps pour chaque adhérent. Je ferai six observations sur celle-ci :
1) On retrouve le champ « CodeAdherent » qui servira de lien avec le champ « CodeAdherent » de l'état principal ;
2) J'ai créé un champ calculé pour concaténer les infos de l'auteur.
Cela permettra de ne manipuler qu'un seul champ dans l'état ;
3) Le champ « DateRetour » est affiché dans la requête. En effet, il doit être affiché dans l'état ;
4) J'ai créé un champ « Retard » pour le nombre de jours de retard ;
5) J'ai créé un champ « Pénalité » pour indiquer le montant de l'amende due (0.10 € par jour de retard) ;
6) Le champ « Rendu » nous sert bien sûr de critère de sélection.

Image non disponible

D'autre part, on peut remarquer que les données du champ « Retard » sont formatées (exemple : 76 jours).
Pour parvenir à ce résultat, cliquez droit sur le champ « Pénalité » puis affichez les propriétés.
Dans la ligne « Format », tapez le code suivant : 0" jours"

Nous avons préparé les sources de nos différents états, il ne nous reste maintenant qu'à les mettre en forme.

III. RÉALISATION DES ÉTATS▲

III-A. Préparation du sous-état▲

Image non disponible

Voici ci-contre l'aperçu du sous-état des ouvrages non rendus.
Il présente ici la liste de tous les ouvrages concernés, tous adhérents confondus.
On remarquera également le cumul des pénalités qui se mettra à jour en fonction de chaque adhérent lors de l'impression.

Image non disponible

Voici l'état en mode création. J'aurai deux remarques importantes à faire :
          - le champ « CodeAdherent » qui permettra de faire le lien avec l'état principal n'est pas intégré dans la structure de l'état ;
          - pour faire apparaître les titres du sous-état, il est nécessaire de les implanter dans l'entête d'état.

Pour retrouver comment organiser vos contrôles sur votre état, je vous renvoie à l'article : Créer un état.

III-B. Préparation état principal▲

Image non disponible

Image non disponible

Aperçu de l'état principal

Structure de l'état principal

On peut faire plusieurs remarques par rapport à la structure de l'état principal :
1) Implantation des champs de la requête source de l'état principal.
Le champ « CodeAdherent » n'est toujours pas implanté ;
2) On utilise le champ de type Étiquette (bouton Aa dans la boîte à outils) pour créer les textes fixes ;
3) L'espace pour le sous-état a été réservé. Le cadre sera supprimé au moment de l'implantation ;
4) Un nouveau champ de type Étiquette a été créé. On remarquera que pour créer des paragraphes dans l'étiquette on appliquera le raccourci clavier : SHIFT + ENTRÉE ;
5) La ligne des salutations n'est pas une étiquette, mais une zone Texte (bouton ab dans la boîte à outils).
En effet, il y a une concaténation de texte fixe avec le champ Civilité.

III-C. Implantation du sous-état▲

Il ne nous reste maintenant qu'à implanter le sous-état dans l'état principal. Cette opération se déroulera en trois étapes.

Étape 1▲

Image non disponible

Mettre la fenêtre de base de données et l'état en mode création en fenêtre côte à côte.
Cliquez maintenu sur le nom du sous-état et le glisser dans l'état principal en cours de création.

Étape 2▲

Image non disponible

Le sous-état implanté développe un espace dont les mesures correspondent à ses dimensions.
On peut, si on le désire enlever l'étiquette ou en modifier le texte.

Étape 3▲

Image non disponible

Il ne nous reste qu'à paramétrer la liaison entre l'état principal et le sous-état.
En cliquant droit sur le bord du cadre du sous-état, demandez l'affichage des propriétés.
Par l'onglet « Données », on retrouve les deux propriétés qui permettront d'établir le lien.
          - Champs fils : contiendra le ou les champs liés (séparés par ;) de la source du sous-état. (Côté plusieurs de la relation.) ;
          - Champs pères : contiendra le ou les champs liés (séparés par ;) de la source de l'état principal. (Côté 1 de la relation.).  
En cliquant dans l'une des deux propriétés puis sur le bouton visible à droite de la propriété, Access ouvre une boîte de dialogue permettant d'indiquer les champs à lier.
Dans notre exemple, indiquez dans les deux listes le champ « CodeAdherent ».

Il est possible de saisir directement les noms des champs pères et fils dans les lignes correspondantes.

IV. CONCLUSION▲

Ce petit article vient en complément de Création d'un état afin de vous rendre autonome sur la création de ce type d'objet.

V. TÉLÉCHARGEMENT▲

Cliquez sur ce lien pour récupérer la base exemple.

VI. REMERCIEMENTS▲

Un grand merci à fabsnz, Dolphy35, Claude Leloup pour leur relecture attentive.
Ainsi que Loufab pour ses encouragements. Je voudrais remercier l'ensemble de l'équipe DVP pour son travail énorme qui a fait de Developpez.com ce qu'il est aujourd'hui et qui nous tire toujours vers le haut.

Vous avez aimé ce tutoriel ? Alors partagez-le en cliquant sur les boutons suivants : Viadeo Twitter Facebook Share on Google+   

Copyright © 2008 Jean BALLAT. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents, images, etc. sans l'autorisation expresse de l'auteur. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts. Droits de diffusion permanents accordés à Developpez LLC.