Accueil Recherche | Plan Technique | Liens | Actualités | Formation | Emploi | Forums | Base
TUTORIEL cerig.efpg.inpg.fr 
Vous êtes ici : Accueil > Formation > Tutoriels > Bases de données relationnelles > Les états
        Révision : 01 avril 2003
 
                  Les bases de données
relationnelles
                 
Chap.
précéd.
Plan du
tutoriel
Liste des
tutoriels
Chap.
suivant
 
Chapitre 23 : les états (1)
 
1 - Introduction
                  Dans une base de données, l'objet état est utilisé pour mettre en forme les données destinées à être imprimées. Lorsque la matérialisation de données issue d'un SGBD présente un caractère répétitif, et plus encore lorsqu'il est envisagé d'automatiser cette opération, le recours à un état constitue la meilleure solution. A ce titre, l'état constitue donc le troisième objet des SGBD par ordre d'importance décroissante, après les tables et les requêtes.          
Mais la création d'un état qui présente correctement les données imprimées est souvent une opération longue et quelque peu fastidieuse. C'est pourquoi l'état n'est pas toujours considéré comme indispensable, et il existe deux façons de s'en passer.
Première solution. Nous pouvons imprimer directement une table ou une feuille de données, à condition de limiter considérablement nos ambitions en matière de présentation. Nous sommes maîtres de la largeur des colonnes (ne pas lésiner sur ce point, sinon l'information risque d'être tronquée), de la couleur de fond de cellule, de la taille et du type de la police, et c'est à peu près tout. Le SGBD pagine, affiche la date et le nom de la table (ou de la feuille de données), et met en page à sa façon -- c'est à dire qu'il commence en haut et à gauche, tout simplement. Imprimer directement une table ou une feuille de données est une solution de dépannage, mais ce n'est pas vraiment le moyen de réaliser un document bien présenté.
Deuxième solution. Une table créée dans Access et dans d'autres SGBD fonctionnant sous le système d'exploitation Windows peut facilement être exportée vers un tableur, et en particulier vers Excel qui est le plus utilisé. Dans un tableur, la mise en page avant impression est facile et intuitive, et nous disposons là d'un bon moyen pour obtenir un imprimé correctement présenté. L'exportation vers Excel des résultats d'une requête constitue une technique de plus en plus utilisée, non seulement pour mettre en forme des données avant impression, mais aussi pour profiter des diverses fonctions qu'offre le tableur. L'opération est particulièrement facile si nous nous trouvons dans Access : la table à analyser ou à imprimer étant sélectionnée, nous cliquons dans le menu sur "Outils", puis sur "Liaisons Office"et enfin sur "Analyse avec Microsoft Excel". Le tableur s'ouvre, et la table y est aussitôt exportée. De plus, un fichier au format Excel est enregistré sur le bureau.
Un état est pratiquement toujours construit sur le résultat d'une requête, et ce pour les raisons suivantes :
            les bases de données contiennent souvent des quantités considérables d'information, et il n'est pas question de tout imprimer. Il faut donc commencer par sélectionner l'information particulière que l'on veut reproduire avant d'imprimer ;
  dans une BDD relationnelle, l'information est répartie dans des tables multiples, et il faut la rassembler avant de l'imprimer. On peut, cependant, introduire dans un même état des champs provenant de plusieurs tables, à condition que ces dernières soient liées par des relations ;
  on peut désirer que l'information imprimée se présente dans un certain ordre. Il faut donc opérer un tri plus ou moins complexe avant d'imprimer. Ceci dit, on peut également demander un tri complexe (jusqu'à quatre niveaux) lors de la création de l'état.
Bien qu'il ne soit pas question, en général, d'imprimer la totalité du contenu d'une BDD, un état s'étale souvent sur plusieurs pages. C'est le SGBD qui se charge de gérer les sauts de page (si l'utilisateur ne donne pas d'instructions particulières à ce sujet), d'imprimer l'en-tête et le pied de chaque page. L'en-tête de la première page, et la fin de la dernière page, sont généralement différents de ceux des autres pages.
Comme pour les autres chapitres de ce tutoriel (ou tutorial, ou cours en ligne), nous utiliserons le SGBD Access comme support pratique. Nous prévenons cependant le lecteur que la mise en forme d'un état dans Access est une tâche quelque peu pénible, parce que l'outil mis à notre disposition par le SGBD est malcommode. Pour une impression occasionnelle, nous recommandons donc d'utiliser plutôt Excel.
Signalons au passage que, si vous utilisez Access 2002 comme SGBD, Windows XP comme système d'exploitation, et si vous n'êtes pas administrateur de votre machine, un bug peut faire capoter la création de l'état en fin d'opération. Si vous vous trouvez dans ce cas, prévenez l'administrateur de votre service informatique, et priez le ciel pour qu'il résolve le problème.
2 - Les préliminaires
La finalité de l'état étant la réalisation d'une sortie imprimée, il est indispensable d'indiquer au SGBD :
            l'imprimante utilisée ;
  la taille de la zone imprimable, c'est à dire celle du papier, diminuée de celle des marges.
Nous rencontrons ici l'une des différences importantes qui existent entre l'état et le formulaire : le premier opère dans une zone imprimable, le second dans une fenêtre de l'écran du moniteur.
                  L'imprimante. Le SGBD construit l'état en fonction des caractéristiques de l'imprimante par défaut. Si vous utilisez un poste de travail sur lequel aucune imprimante n'a été déclarée, vous allez au-devant de bien des ennuis (lenteur, plantage...). Vérifiez donc ce point avant d'entreprendre la création d'un état.          
La zone imprimable. Ensuite, le SGBD tient compte des options que vous avez choisies -- ou, plus généralement, conservées par défaut -- en ce qui concerne la taille du papier (A4, sauf exception) et les marges d'impression. Si vous manquez de place en largeur -- ce qui est souvent le cas lorsqu'un état est présenté en colonnes -- vous avez intérêt à réduire les marges à gauche et à droite. Mais attention ! vous devez effectuer cette opération avant de commencer à construire votre état. Une fois ce dernier créé, les changements de marge que vous effectuez sont sans effet sur lui.
Dans Access, pour régler les marges, cliquez dans le menu sur "Outils", puis "Options..." : la fenêtre "Options" s'ouvre. Choisissez l'onglet "Général" : les quatre marges sont réglées par défaut à un pouce (2,54 cm). En pratique, 2 cm à gauche et 1 cm à droite suffisent largement. Quelles que soient les valeurs que vous choisissez, elles resteront valables quelle que soit la BDD dans laquelle vous travaillez, tant que vous ne les modifierez pas à nouveau.
La sélection des données. Mettez au point la (ou les) requête(s) qui vous permettent de sélectionner les données à imprimer. Si vous avez besoin d'un tri, incorporez-le à ce stade, car les tris que l'on demande au niveau des états ne fonctionnent pas toujours très bien. Enfin, vous n'êtes pas obligé de créer une table, un état pouvant être construit directement sur le résultat d'une requête.
La présentation des données. Il existe deux modes de présentation d'un état :
            la présentation tabulaire : les données sont disposées dans des colonnes verticales, comme dans une table. Le nom des colonnes (l'étiquette) figure une seule fois par page. Cette présentation, qui convient particulièrement bien aux données numériques, économise de la place ;
  la présentation verticale : les données relatives à chaque champ sont imprimées les unes en dessous des autres, le nom du champ étant rappelé à chaque fois. Cette présentation est la seule possible lorsque le contenu de certains champs est volumineux. Elle peut faire l'objet d'un regroupement sur une colonne donnée, si cette dernière contient de nombreux doublons. Elle présente l'inconvénient de requérir beaucoup de place.
Il est bon de réfléchir à la présentation avant de commencer à créer l'état.
Les barres d'outils. Il en existe deux qui sont spécifiques des états. Elles s'appellent respectivement "Créer un état" et "Mise en forme (Formulaire/État)", et certaines de leurs icônes nous seront indispensables. Pour faire apparaître ces deux barres, nous cliquons sur "Affichage" dans le menu, puis sur "Barres d'outils", et nous cochons le nom de la barre désirée. Par la même occasion, nous demandons l'affichage de la boîte à outils.
3 - La création de l'état
                  Ouvrons une BDD contenant au moins une table pourvue de données et, dans la fenêtre "Base de données", sélectionnons l'objet "États". Deux options nous sont présentées :          
            Créer un état en mode Création
  Créer un état à l'aide de l'Assistant
Les manuels, en général, conseillent d'utiliser l'assistant en toutes circonstances, car créer un état à partir de rien est assez fastidieux. Mais, dans le cas où l'on choisit la présentation tabulaire, et où il y a de nombreux champs, l'assistant conduit à un mauvais résultat, qu'il est ensuite difficile de corriger complètement. Dans ce cas, il faut confier à l'assistant le soin de créer une partie des champs seulement (en particulier ceux sur lesquels on envisage un regroupement), et utiliser ensuite la fonction "Modifier" pour introduire les autres champs au fur et à mesure que la mise en forme de l'état progresse. Obtenir un bon résultat lors de l'impression demande une bonne dose de patience.
Il existe aussi une icône "Nouveau", qui redonne le mode création et l'assistant, mais propose de plus des fonctions dont l'intérêt est plutôt mince :
            État instantané : Colonnes. Cette fonction crée un état en présentation verticale dès que nous lui fournissons le nom de la table ou de la requête. Nous ne sommes pas maître des paramètres, et le résultat est sommaire ;
  État instantané : Tableau. Cette fonction opère comme la précédente, mais en présentation tabulaire ;
  Assistant graphique. Cette fonction permet de créer des graphiques, mais leur qualité est très mauvaise. Pour créer un graphique correct, il faut exporter les données vers un tableur ;
  Assistant étiquette. Comme son nom l'indique, cette fonction permet d'imprimer des étiquettes.
Lançons l'assistant, choisissons une table ("Personnes", avec les champs "Nom" et "Prénom"), sélectionnons ses deux champs, ignorons le regroupement et le tri, adoptons la disposition tabulaire, l'orientation portrait et le style "Informel" (valeurs par défaut), donnons un titre à l'état ("Liste des personnes"), et cliquons sur "Terminer". Nous obtenons un état qu'il est souhaitable d'améliorer.  
4 - La structure de l'état
                  L'état que nous venons de créer apparaît dans la fenêtre "Base de données" (l'objet "État" étant sélectionné). Nous le sélectionnons, puis nous cliquons sur l'icône "Modifier". Une fenêtre s'ouvre, qui nous permet de modifier l'état.          
Procédons d'abord à une petite vérification. Notre imprimante utilise du papier A4 de 21 cm de large, et  nous avons choisi des marges gauche et droite importantes (5 cm) afin de limiter la taille de la figure ci-dessous. Nous vérifions que la largeur utile de l'état (la partie claire et quadrillée) mesure effectivement 11 cm, comme le montre la figure. Même si nous modifions par la suite les marges dans la fenêtre "Options", celles de notre nouvel état ne varieront pas.
Nous observons que l'état est divisé en cinq zones :
            En-tête d'état. Cette zone est imprimée en haut de la première page uniquement ;
  En-tête de page. Cette zone est imprimée en haut de toutes les pages (à condition qu'elle contienne de l'information) ;
  Détail. Ce terme désigne la zone qui s'étend entre l'en-tête et le pied de page. Cette zone permet d'imprimer le contenu de la table (ou de la feuille de données) sous-jacente ;
  Pied de page. Cette zone est imprimée en bas de chaque page ;
  Pied d'état. Cette zone s'imprime uniquement sur la dernière page, après le détail et avant le pied de page. Par défaut, l'assistant lui attribue une hauteur nulle.
De manière quelque peu schématique, on peut dire que les diverses zones sont utilisées de la manière suivante :
            la première zone (en-tête d'état) contient le titre, de telle sorte qu'il n'apparaisse qu'une seule fois, et qu'il se trouve en tête de l'état ;
  dans une présentation tabulaire, les noms des champs (on les appelle les "étiquettes") sont placés dans la seconde zone (en-tête de page), de manière à être reproduits en haut de chaque page. Dans une présentation verticale, les étiquettes sont regroupées avec les champs correspondants dans la zone "Détail", et l'assistant ne prévoit pas d'utiliser l'en-tête de page ;
  les champs (on les appelle "zones de texte", ou parfois "contrôles" comme dans les formulaires) sont placés dans la troisième zone (détail) ; leurs valeurs sont imprimées ligne après ligne, tant qu'il reste de la place entre l'en-tête et le pied de chaque page. Le SGBD passe ensuite à la page suivante, et le processus recommence ;
  dans la quatrième zone (pied de page), le système pagine et inscrit la date. Ces informations apparaissent donc en bas de chaque page.
  la cinquième zone (pied d'état) contient les résultats de calculs éventuels, ou un message de fin d'état.
Dans la fenêtre graphique de modification de l'état, les zones de texte et les étiquettes apparaissent comme des rectangles contenant du texte.
On distingue trois catégories de zone de texte :
            la zone de texte dépendante. Son contenu provient soit d'un champ de la table ou de la requête sous-jacente, soit d'une instruction SQL. Les zones de texte dépendantes se trouvent généralement dans la zone "Détail" de l'état ;
  la zone de texte indépendante. Son contenu ne provient pas d'un objet de la BDD. On l'utilise pour afficher un texte informatif (exemple : le titre de l'état), une image (exemple : le logo de l'entreprise), ou des éléments de décoration, principalement dans l'en-tête de l'état ;
  la zone de texte calculée. Elle contient le résultat d'un calcul (exemples : somme, moyenne, fonctions statistiques, date, page, etc.). Ce résultat est remis à jour chaque fois que les données utilisées dans le calcul sont modifiées. Les zones de texte calculées se trouvent généralement dans les pieds de page ou dans le pied de l'état.
Tout en haut à gauche de la fenêtre de l'application se trouve une liste déroulante baptisée "État". Elle contient la liste des 15 objets qui se trouvent dans la fenêtre de modification de l'état (tableau ci-dessous). La sélection de l'un de ces objets dans la liste entraîne sa sélection dans la page et vice versa.
Objet Type Contenu
Détail Zone 3  
En-têteÉtat Zone 1  
État    
Étiquette4 Zone de texte indépendante Titre de l'état
Nom Zone de texte dépendante Contenu du champ "Nom"
Nom_étiquette Étiquette Étiquette du champ "Nom"
Pied État Zone 5  
Prénom Zone de texte dépendante Contenu du champ "Prénom"
Prénom_étiquette Étiquette Étiquette du champ "Prénom"
Texte5 Zone de texte calculée Affiche la date du jour
Texte6 Zone de texte calculée Affiche la pagination
Trait7 Zone de texte indépendante Le pointillé supérieur
Trait8 Zone de texte indépendante Le pointillé inférieur
ZoneEn-têtePage Zone 2  
ZonePiedPage Zone 4  
5 - La mise en forme de l'état
                  Un état étant ouvert en mode "Modification", les outils qui nous permettent de procéder à sa mise en forme sont dispersés à cinq endroits différents. Nous pouvons en effet utiliser :          
            les icônes des barres d'outils "Créer un état" et "Mise en forme (Formulaire/État)". Nous avons déjà indiqué au paragraphe 2 comment les faire apparaître ;
  la feuille de propriétés que possède chaque objet de l'état. Pour la faire apparaître, nous sélectionnons l'objet (ex : le titre), nous cliquons sur l'icône "Propriétés", puis nous sélectionnons l'onglet "Format" ;
  la fenêtre graphique elle-même, dans laquelle il est possible de modifier l'état en tirant ou en glissant-déplaçant à l'aide de la souris ;
  le menu, par ses rubriques "Format" et "Insertion" ;
  la boite à outils. Pour la faire apparaître, nous cliquons sur l'icône "Boîte à outils". Cette boîte est commune aux états et aux formulaires, mais elle est nettement moins utilisée pour les premiers que pour les seconds.
Les barres d'outils. Nous noterons d'abord que la barre de mise en forme est active lorsqu'une zone de texte est sélectionnée. Cette barre contient les outils usuels du traitement de texte (propriété de la police, alignement du texte, couleur de fond et de premier plan, bordures). Elle contient en outre (tout à fait à gauche) la liste des objets de l'état, liste dont nous avons déjà parlé au paragraphe 4 précédent.
Lorsque nous modifions la présentation d'un état, il nous faut régulièrement vérifier le résultat obtenu, car ce qui s'affiche est souvent différent de ce qui s'observe en mode "Modifier". Pour cela, nous cliquons sur l'icône "Aperçu" de la barre d'outils "Créer un état".
Cette barre contient également deux autres icônes fort utiles. L'icône "Liste des champs" permet de rajouter de nouveaux champs à l'état, par simple glisser-déplacer (de la liste vers l'état). L'icône "Propriétés" permet d'afficher la feuille de propriétés de l'objet sélectionné dans l'état.
Ces feuilles de propriétés nous sont fort utiles, car dans leur onglet "Format" nous pouvons :
            régler la position des quatre coins du rectangle contenant une zone de texte. L'origine des coordonnées correspond au coin situé en haut et à gauche de la zone dans laquelle se trouve la zone de texte ;
  régler les marges et l'interligne (à l'intérieur de la zone de texte) ;
  colorer le fond ou le rendre transparent ;
  régler la bordure (couleur, épaisseur) et l'apparence (3D, ombré, etc.) ;
  fixer tous les attributs du texte, comme dans un traitement de texte.
Si nous avons affaire à une zone de l'état, la liste des attributs est évidemment plus réduite.
La fenêtre graphique nous permet d'effectuer de multiples opérations à l'aide de la souris :
            modifier la taille des différentes zones qui constituent l'état, en tirant sur la barre qui les sépare, lorsque le curseur prend la forme d'une croix. Appliquée à la zone "Détail", cette opération a pour effet de modifier l'interligne à l'impression (dans la présentation tabulaire) ;
  déplacer les zones de texte et les étiquettes, soit séparément, soit en les regroupant par sélection multiple (touche shift enfoncée). Lorsque le curseur prend la forme d'une main ouverte, toutes les zones sélectionnées sont simultanément déplacées. Lorsque le curseur prend la forme d'un index pointé, seule la zone concernée est déplacée. Attention ! ne positionnez pas une zone de texte contre la limite de la zone imprimable, sinon l'imprimante débitera une page blanche pour chaque page imprimée ;
  modifier la taille d'une étiquette ou d'une zone de texte, en tirant sur les sommets ou les milieux des côtés du rectangle correspondant ;
  modifier la largeur de la zone imprimable. Réduisez-la si vous le désirez, mais ne l'élargissez pas au-delà de sa taille initiale, même si vous avez réduit les marges entre temps. Sinon, une page blanche accompagnera chaque page imprimée. Un bon conseil : ne touchez pas à la largeur de la zone imprimable.
Le positionnement à l'aide de la souris ne permet pas d'obtenir un résultat précis. Il est donc recommandé de perfectionner le positionnement en réglant les coordonnées dans les feuilles de propriétés.
Attention ! Si nous plaçons une zone de texte dépendante dans l'en-tête de l'état, seule la première valeur du champ correspondant sera imprimée (parce que l'en-tête est unique). Ceci peut être mis à profit pour imprimer une information qui ne varie pas dans la table sous-jacente (une date par exemple).
Le menu. Les fonctions de la rubrique "Format" deviennent actives lorsqu'une étiquette ou une zone de texte est sélectionnée. Elles nous permettent :
            d'aligner (plusieurs étiquettes ou zones de texte) ;
  de régler la taille (au contenu, par exemple) ;
  de fixer l'espacement horizontal (plus grand ou plus petit) entre étiquettes et/ou zones de texte ;
  de placer en premier plan ou en arrière plan (une image par rapport à une zone de texte par exemple).
Les fonctions de la rubrique "Insertion" nous permettent :
            de numéroter les pages et d'imprimer la date et l'heure (si nous avons créé l'état sans l'aide de l'assistant) ;
  d'insérer des graphiques, des images ou des objets divers, que nous pouvons ensuite placer où nous voulons dans l'état.
La boite à outils. Seuls sont réellement utiles :
            l'outil "Sélection", qui est présent par défaut lorsque la boite à outils n'est pas affichée ;
  l'outil "Étiquette", qui permet en fait de créer une zone de texte indépendante ;
  l'outil "Zone de texte". Lors de l'affichage ou de l'impression de l'état, le SGBD nous demandera de saisir le contenu de cette zone ;
  l'outil "Image", qui permet d'insérer une image dans l'état ;
  l'outil "Saut de page". Dans un état en présentation verticale, l'insertion d'un saut de page en bas de la zone Détail permet de n'afficher qu'un seul enregistrement par page (gare à la consommation de papier !) ;
  l'outil "Sous-formulaire". Les sous-formulaires seront étudiés au chapitre 24 suivant.
Les autres outils -- en particulier ceux qui permettent d'insérer des boutons, des boutons radio, des cases à cocher, des listes, etc. -- n'ont pas d'utilité pour mettre en forme un état qui est, par vocation, destiné à être imprimé.
6 - Conclusion
                  L'état s'avère être un objet utile dans le cas où l'impression de données issues d'une BDD est une opération récurrente. La création d'un état bien présenté étant une opération consommatrice de temps, il est préférable d'effectuer les impressions occasionnelles à l'aide d'un tableur. De plus, l'usage d'un tableur est pratiquement obligatoire lorsqu'on veut présenter les données sous forme d'un graphique.          
Les recommandations qui s'appliquent aux arts graphiques en général sont également valables pour les états en particulier. Il ne faut pas abuser des images, des fonds colorés, des polices exotiques et des présentations tarabiscotées. La simplicité, la clarté et la lisibilité priment.
 
Chapitre précédent Plan du tutoriel Liste des tutoriels Chapitre suivant
Accueil | Technique | Liens | Actualités | Formation | Emploi | Forums | Base
Copyright © CERIG/EFPG 1996-2003
Réalisation et mise en page : J.C. Sohm