Leçon 48 : Etats en création manuelle : Premiers pas

Temps nécessaire pour suivre cette leçon : presque trois quarts d'heure

Pour suivre cette leçon, vous devez avoir suivi les leçons précédentes. Ou plus précisément, vous devez être en possession de la base de données ProFormation.mdb telle qu'elle était à la fin de la leçon précédente. Si vous n'êtes pas certain de l'avoir, vous pouvez la télécharger ici

Aperçu de cette leçon

Dans cette leçon, nous allons commencer à apprendre à créer un état à partir de ... rien !
La création manuelle d'un état possède de nombreux points communs avec la création manuelle d'un formulaire. Aussi, je vous recommande une révision des leçons 30 (surtout), mais aussi la 31, 32 et 33.

Sommaire

  1. Etat créé à la main : Présentation très sommaire
  2. Explication des espaces verticaux inutiles entre les données
  3. Modification des étiquettes pour obtenir un état convivial
  4. Gestion des espaces horizontaux entre les champs et les étiquettes
  5. Mise en garde concernant la largeur prédéfinie des champs

Quel est l'intérêt principal de créer un état à partir de rien, puisqu'on a des assistants qui peuvent faire ce travail à notre place ?

Les assistants, nous l'avons vu, renvoient des résultats discutables : les présentations sont imposées, et, surtout, il leur arrive de carrément tronquer les champs. Créer son état à la main revient à construire sa propre maison à partir d'un simple terrain : vous serez l'architecte aux pleins pouvoirs..

Demandez un état Nouveau (basée sur T_Celebrite), en mode création, et cliquez sur OK : . Vous arrivez ici : .

Vous êtes en mode création de votre état, et il y a 3 sections :

1 : L'en-tête de page
2 : Le détail
3 : Le pied de page

Histoire de simplifier au maximum notre premier exemple, supprimons les sections 1 et 3. Pour ce faire, allez dans le menu Affichage, et cliquez sur En-tête pied de page : . Maintenant, affichez les champs.

Comment fait-on ?

Vous ne vous rappelez plus ? C'est comme dans les formulaires !

Oui, mais j'ai un peu oublié !

Ah ça, ce n'est pas bien ! Je vous avais pourtant bien demandé en début de leçon de revoir les leçons sur la création de formulaires (30, 31, 32 et 33) !

Ok, ok, je m'en rappelle maintenant, c'est Affichage/Liste des champs.


Etat créé à la main : Présentation très sommaire

Faites glisser le champ NomClient ici : . Tout comme dans les formulaires, l'étiquette et le champ s'affichent : .

Effectivement, ça ressemble drôlement à la conception d'un formulaire !

En réalité, quelle est la différence entre un formulaire et un état ?

Le formulaire, va servir à entrer des données, et il va falloir l'optimiser pour un affichage à l'écran correct, et l'état, comme il ne va servir qu'à afficher et imprimer les données, va simplement être optimisé pour un affichage papier... C'est tout.

Alors, félicitations ! Vous êtes l'auteur de votre premier état "Maison" ! Bon, il n'y a pas grand chose à l'intérieur: Juste le nom... Mais c'est quand même un état. Allons voir directement à quoi il ressemble en mode... Non pas saisie de données, cette fois, mais "Aperçu avant impression" ! Cliquez sur la petite loupe : : Voilà :

Beurk !

Quoi beurk ??? C'est ce que vous avez demandé... Ni plus ni moins... C'est évidemment plus de travail de tout faire à la main... Normalement, vous devriez avoir 13 pages, ou a peu près.


Explication des espaces verticaux inutiles entre les données

Effectivement, j'ai bien 13 pages. Mais pourquoi y a-t-il autant d'espace entre les noms ?

Revenez en mode création : . Votre champ est posé au milieu d'une grille, et l'état va "imprimer" aussi cet espace vide : . En mode aperçu avant impression, le cumul de ces 2 zones expliquent l'espace entre les noms :

C'est limpide !

En fait, la place occupée par chaque enregistrement est égale à ce qui est encadré en rouge :

Pour avoir une liste de noms plus compacte (avec moins d'espace), nous réduisons la grille ?

Oui. Vous vous rappelez de la leçon 39, au début ? Nous parlions justement des limites du formulaire : , ainsi que de la manière de modifier ces limites : et

C'est ce que vous allez faire ici:
  1. Déplacez le champ NomClient et son étiquette tout contre le bord du haut, tout à gauche :
  2. Resserez la grille horizontalement et verticalement pour carrément la faire disparaître :
  3. Lancez l'état en mode aperçu avant impression

Et voilà :

C'est mieux !
Pourrait-on avoir le titre "Nom:" juste une seule fois au dessus de tous les noms afin d'éviter de répéter à chaque ligne Nom, Nom, Nom, Nom... ?

Si, on peut, mais nous verrons ça à la prochaine leçon. Pour l'instant, nous allons revenir en mode création et installer le prénom à côté du nom.

Dois-je ré-agrandir la grille pour pouvoir placer un nouveau champ à côté ?

Non, c'est comme dans les formulaires : Vous pouvez placer les champs directement dans la zone en gris foncé

ASTUCE : N'essayez pas de placer directement le champ Prenom juste à côté du nom comme ceci : car, comme vous voyez,l'étiquette Prenom vient par dessus le champ NomClient, ce qui donnera en mode saisie de données un truc bien sale, comme ceci : .

Je vous conseille plutôt la démarche suivante :

  1. Tirez le champ prénom un peu plus bas, comme ceci :
  2. Déplacez-le maintenant à la bonne place :
  3. Et rétrécissez la grille (sinon, il y aura à nouveau plein d'espaces entre les différents enregistrements) :

Et voilà :


Modification des étiquettes pour obtenir un état convivial

Pas mal !
Tout à l'heure vous m'aviez promis de m'expliquer comment faire pour mettre le titre (Nom et Prénom) une fois au dessus de la liste lors de la prochaine leçon, OK, mais pourrait-on simplement supprimer les mots "Nom" et "Prénom" ?

Bien sûr ! Ce ne sont que de simples étiquettes ! Vous pouvez les supprimer, tout comme vous pouvez écrire autre chose à l'intérieur.Essayez ceci : , ce qui donne

Et je peux aussi bien sûr les effacer si je veux...

Mais oui, essayez : . Ca donne :


Gestion des espaces horizontaux entre les champs et les étiquettes

Aïe ! Maintenant, c'est horizontalement qu'il y a trop d'espace

Cette fois, c'est à gauche qu'il faut compresser tous les champs, comme ceci :

  1. Tirez NomClient tout contre la gauche :
  2. Mettez Prenom tout contre NomClient :
  3. Et enfin, évitez la place perdue en ramenant la grille tout contre Prenom :

Et voilà :

L'étape 4 (Ramener la grille) est un peu inutile, non ?

Dans ce cas précis, oui. Mais nous verrons par la suite que si cette zone de grille (qui ne contient rien) dépasse la largeur de la feuille, lors de l'impression, il y aura des problèmes de pages blanches.

Prenons donc dés le début les bonnes habitudes.


Mise en garde concernant la largeur prédéfinie des champs

A part ça, il me semble qu'il y a encore bien trop d'écart entre les noms et les prénoms...

Oui, mais il faut prévoir le fait que si on a un nom super long, il ne doit pas empiéter sur le prénom : Imaginons un client fictif qui se nommerait "Charles-André Du Château des Cinq Colombes", il ne rentre plus :

Il faut vraiment penser à tout ! Mais comment faites-vous pour penser à autant de possibilités...

A la longue, à force de faire des erreurs, et encore des erreurs, et encore, et encore, et encore, on en fait de moins en moins... Vous aussi, vous verrez !

Fin des hostilités ! Fermez votre état. Appelez-le E_CelebriteListeCompacte.

Bon... Hem... On peut résumer ?

Les états avec assistant permettent en quelques secondes d'obtenir un résultat acceptable, mais sans plus.
La création d'un état de toutes pièces permet réellement une personnalisation de l'affichage qui vous permet d'être carrément maniaque sur la présentation.
Par contre, un simple écart, quelques millimètres d'erreur, et tout à coup, l'état devient illisible (généralement trop d'espace apparaît) : en mode création, une des tâches récurrentes consiste à réduire, réduire, réduire la zone d'impression, sous peine d'avoir plein de place gaspillée.
Nous avons en outre constaté que la création d'un état a de très nombreux points communs avec la création de formulaires.

Avez-vous bien compris ?

  1. Lorsque je crée un nouvel état sans assistant, 3 sections sont affichées par défaut. Quelles sont-elles ?
    a. En-tête d'état - Détail - Pied d'Etat
    b. En-tête de page - Détail - Pied de page ***
    c. Il n'y en a que deux : Détail et Pied de page
    d. Il n'y en a qu'une : Détail

  2. Je veux supprimer l'en-tête de page, mais pas le pied de page
    a. Impossible. Le menu Affichage ne permet que de supprimer ou d'afficher les deux à la fois ***
    b. Il suffit d'aller dans le menu Affichage : En-tête de page
    c. Il suffit d'aller dans le menu Affichage : Supprimer pied de page

  3. Il est possible de modifier l'intitulé des étiquettes des champs dans les états créés manuellement ?
    a. Oui ***
    b. Non
    c. Non, contrairement aux formulaires qui le permettent
    d. Seulement pour les champs de type texte

  4. La conception manuelle d'un état ressemble assez à la conception
    a. D'une table
    b. D'une requête
    c. D'un formulaire ***
    d. D'un enfant Vous devriez avoir honte :-)

  5. Les états créés manuellement peuvent avoir comme source :
    a. Une table seulement
    b. Une requête seulement
    c. Une table ou une requête ***
    d. Un formulaire

Pour voir les solutions, il vous suffit de sélectionner le questionnaire ci-dessus : 3 petites étoiles *** apparaîtront en face des bonnes réponses.

Exercice

L'exercice coinsiste à créer un état en mode création qui va contenir l'ensemble de toutes les célébrités françaises qui font du cinéma et dont le salaire est connu. Il y a deux difficultés dans cet exercice : d'abord savoir comment faire pour obtenir seulement une partie des enregistrements de T_Celebrite, et ensuite, comprimer le résultat comme ceci :

J'ai mis une petite règle en dessous de l'état pour vous montrer que je suis arrivé à ce que le résultat ne dépasse pas 9 centimètres et demi... Faites-en autant !... Je l'ai d'ailleurs un tout petit peu trop rétréci, car il manque le u de Depardieu...

Vous enregistrerez cet état sous E_CelebriteCinemaFrancais

Téléchargez la solution de l'exercice ici, qui n'est autre que ProFormation.mdb telle qu'elle devrait être à la fin de cette leçon.

Si vous n'êtes pas tout à fait certain d'avoir suivi correctement toutes les étapes de cette leçon, vous avez la possibilité de télécharger ici la version de ProFormation.mdb exactement dans l'état ou elle devrait être à la fin de cette leçon.

Avez-vous une question technique concernant cette leçon ? Cliquez ici !
Une remarque sur cette leçon ? Un problème ? Une erreur ? une ambiguité ? Soyez gentil de m'en informer