Dans cette section, nous allons voir comment créer et gérer les états avec Access. Les états sont une vue à l'instant T, un aperçu avant impression des données issues des tables. Pour la manipulation, nous avons récupéré une petite base de données facturation que vous pouvez vous-même récupérer en suivant le lien donné dans le descriptif de cette vidéo.
Elle est constituée de deux tables principales, les clients et leurs commandes, reliant entre elles ce qui nous a permis de créer le formulaire client et commandes avec sous-formulaire présentant dans la partie haute les informations du client et dans la partie basse la synthèse des commandes que le client a passé. A ce stade, nous n'avons pas encore d'état. Nous souhaitons à l'issue créer un état qui permette d'imprimer la facturation ou la synthèse des commandes pour un client.
But ultime, créer un lien entre le formulaire et l'état. Pour créer un état dans Access, rien de plus simple. Nous activons le ruban Créer, nous sélectionnons la table à partir de laquelle nous souhaitons créer l'état, et dans le ruban, nous cliquons sur le bouton État.
Access nous construit automatiquement l'état sur les données de la table Client. et nous livre le rendu sur la partie centrale de l'écran. Vous remarquez que des lignes pointillées fixent les limites de la page, si bien qu'ici, certaines données ne s'imprimeront pas sur la même page que les premières données du tableau.
Il suffit alors d'accéder au mode création ou en mode page pour pouvoir réorganiser les données, réduire la largeur de certains champs, etc. Nous n'allons pas nous attarder... sur cet état de la table client car il présente peu d'intérêt.
Il retranscrit une vue linéaire de tous les clients issus de la table. Ce que nous ferait-on, nous, c'est un état avec un sous-état, c'est-à-dire les clients avec leurs commandes. Contrairement au formulaire, cette fois-ci, Access ne nous a pas proposé naturellement de créer directement l'état avec le sous-état.
Pour créer un état avec un sous-état, les relations existantes Nous allons directement passer par l'assistant état du ruban créé. Dans la boîte de dialogue qui apparaît, nous allons commencer par indiquer les champs que nous souhaitons voir apparaître de la première table, en l'occurrence ici des clients. La double flèche nous permet d'insérer tous les champs et ensuite éventuellement d'éliminer certaines informations que nous ne souhaitons pas voir.
Puisque nous souhaitons un état avec un sous-état, Nous commandons l'affichage des champs de la table commande et nous rajoutons les informations de la table commande qui nous intéressent. Nous ne répétons pas le champ commande client qui est la clé externe liée à la clé primaire du champ client num que nous avons déjà ajouté. Nous cliquons sur suivant.
Access reconnaît bien qu'il s'agit d'un état avec un sous-état et nous propose d'organiser judicieusement nos données par client, c'est-à-dire les informations du client sur la partie haute. et la synthèse de ces commandes sur la partie basse. Nous acceptons et cliquons sur Suivant. Cette troisième étape est un point important.
Nous devons ajouter un niveau de regroupement sur un champ qui qualifie de façon unique les clients, soit le champ Client Nume. C'est ce qui nous permettra de les gérer de façon indépendante, vous le verrez plus tard, dans l'état. Nous cliquons sur Suivant.
Nous pouvons choisir un ordre de tri. C'est facultatif, par exemple ici sur le champ commandes totales Et comme ce champ commandes totales est numérique, nous pouvons demander à l'assistant d'ajouter des options de synthèse, en l'occurrence ici la somme des commandes pour le client. Nous le cochons, nous validons, nous cliquons sur suivant Nous choisissons une configuration avec une disposition échelonnée.
et une orientation paysage, c'est-à-dire une feuille plus large, pour avoir plus de place lors de la disposition des données. Nous cliquons de nouveau sur Suivant, et à cette dernière étape, nous donnons un nom à notre état, et nous validons sa création. Access nous crée bien l'état avec le sous-état, c'est-à-dire, comme vous le constatez sur cette capture, les informations du client, et regrouper pour chaque client les commandes que ce client a passées avec ses options de synthèse, c'est-à-dire la somme des commandes du client.
Nous fermons l'aperçu avant impression pour revenir en mode page, car nous avons constaté certains dysfonctionnements dans l'affichage, des champs qui ne sont pas forcément très visibles et d'autres qui sont un petit peu tassés. Dans les pieds de groupe qui en hument, nous avons une répétition des données. Donc nous allons tout simplement supprimer les données du deuxième pied de groupe, en les sélectionnant avec la touche Maj et en enfonçant la touche Supre. L'étiquette du premier pied de groupe est nommée automatiquement par Access, elle n'est pas très judicieuse. Nous la supprimons et nous pouvons remonter légèrement les informations de synthèse en les sélectionnant.
Nous pouvons nous aider de la souris ou encore des flèches du pavé directionnel. Petit à petit, nous réorganisons les données. Par le bouton affichage, nous commandons l'aperçu avant impression.
La présentation est déjà plus claire. Ici, l'objectif n'est pas de pouvoir présenter l'état de la meilleure des façons qui soit. Il s'agirait de modifier la largeur des champs, de les disposer autrement.
Nous souhaitons créer un lien entre le formulaire et l'état. Le but du jeu est de consulter un client à l'instant T sur le formulaire et en cliquant sur un bouton, de commander l'aperçu avant impression de sa facturation. Pour ce faire, la première chose...
et de pouvoir dissocier l'affichage des clients. En effet, dans ce rendu, dans cet état, tous les clients sont affichés sur la même page. Donc, si nous créons un lien entre le formulaire et l'état, malheureusement le bouton nous renverra vers cette unique page présentant tous les clients dans une même vue. Nous devons les afficher chacun sur des pages différentes.
C'est pourquoi nous allons insérer un saut de page de manière à les dissocier. Pour ce faire, nous sélectionnons la zone en tête de groupe client NUM qui est présente grâce au niveau de regroupement que nous avons créé lors de l'assistant. Puis, nous allons de nouveau afficher sa feuille de propriété et dans son onglet Format, pour la propriété Saut de page, nous allons ajouter un saut de page avant section.
Nous enregistrons avec. CTRL-S et nous basculons de nouveau en aperçu avant impression. Vous remarquez que du coup, nous avons un état qui propose par page un seul client, ce que nous souhaitions.
Jusque là, tout va bien. Nous allons donc fermer cet état. L'objectif maintenant est de pouvoir créer le lien entre le formulaire et l'état.
Nous ouvrons donc le formulaire. mode création et nous ajoutons avec le ruban création de la zone contrôle un bouton sous les autres boutons. L'assistant se déclenche, nous souhaitons commander avec ce bouton l'aperçu du client. Donc il s'agit d'une opération sur état, aperçu d'un état, nous cliquons sur suivant.
Forcément. Nous n'avons qu'un seul état à ce stade, client et commande. Nous cliquons sur suivant, nous choisissons l'image du bouton, nous cliquons de nouveau sur suivant, et nous nommons ce bouton. Et nous cliquons enfin sur terminer.
Le bouton est créé. Si nous le testons, en mode formulaire, nous commençons par naviguer au travers des clients, nous arrivons sur le troisième. Monsieur Douche Urbain qui a passé deux commandes. Si nous cliquons sur le bouton que nous venons de créer, nous commandons en effet l'aperçu des clients.
Mais vous constatez que cet aperçu ne correspond pas puisque nous sommes sur Monsieur Decajou et non sur Monsieur Douche. Pourquoi ? Puisque le bouton que nous avons créé consiste simplement à ouvrir l'état.
Nous ne lui avons pas dit comment l'ouvrir. Nous devons donc configurer. personnaliser un peu plus loin cette macro.
Nous sélectionnons de nouveau ce bouton. Depuis sa feuille propriété, nous cliquons sur son onglet événement. Vous remarquez que l'événement sur clic est associé à une macro, celle que nous avons créée avec l'assistant bouton.
Nous allons la personnaliser en cliquant sur son petit bouton à trois points et nous basculons dans l'éditeur de macro. L'éditeur de macro... a bien une tâche qui consiste à ouvrir un état L'état client est commande en mode aperçu avant impression. Mais aucun lien à ce stade n'est défini entre le formulaire et l'état. Pour définir ce lien et dire que les clients doivent correspondre, nous devons ajouter une condition WHERE.
Cette condition WHERE consiste à dire que nous devons ouvrir l'état au niveau du même numéro de client que le formulaire sur lequel nous sommes en train de consulter le client. C'est à dire que le champ client num. qui définit le client de façon unique, le champ client num que nous allons écrire ici, et vous remarquez que access vous aide avec une petite liste, si bien qu'il nous suffit de le sélectionner, doit être égal au champ client num du formulaire.
Pour ce faire, il faut indiquer tout le chemin, c'est-à-dire, dans les formulaires, nous souhaitons faire un lien avec le formulaire client et commande, et sur ce formulaire client et commande, nous souhaitons faire un lien précisément avec le champ client num. Voilà. Ici, la condition where est complétée.
Vous remarquez la présence des points d'exclamation pour séparer les objets, les formulaires, le formulaire client et commande, et le champ client num. Les deux champs client num de l'état et du formulaire doivent correspondre. Nous enregistrons avec CTRL-S, nous fermons l'éditeur de macro, Et nous exécutons de nouveau notre formulaire en mode formulaire. Nous naviguons au travers des enregistrements.
Nous sommes sur M. Douche Urbain qui a passé effectivement deux commandes. Nous souhaitons accéder à sa facturation. Nous cliquons de nouveau sur le bouton. Et vous remarquez cette fois-ci que nous avons bien en instantané l'aperçu avant impression du client M.
Douche Urbain que nous étions en train de consulter. depuis le formulaire avec la synthèse de ces commandes. Donc voilà une petite application qui est fonctionnelle pour les utilisateurs qui en temps réel manipulent les données depuis le formulaire et veulent accéder directement à l'impression de ces données sur demande.
Bien sûr ici, l'état nécessite d'être amélioré au niveau de sa présentation, de la disposition de ses éléments, mais ceci consiste en un travail manuel en mode création de réagencement et de disposition des champs.