formateur informatique

Récolter les données sur un formulaire Access

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Récolter les données sur un formulaire Access
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
Sujets que vous pourriez aussi aimer :


Récolter les données sur un formulaire

Dans la l'exercice précédent, nous avons conçu manuellement l'interface pour gérer les commandes des clients. Un client doit être désigné par le biais d'une liste déroulante. Il en va de même pour chaque article acheté par ce client. Dans l'un et l'autre cas, toutes les informations correspondantes doivent être extraites depuis la table source. Dans cet exercice, nous allons donc apprendre à récolter les données au choix d'une référence depuis une liste déroulante.

Base de données source
Il est préalablement nécessaire de récupérer la base de données, source de tous nos travaux, au travers des exercices réalisés. Formulaire Access Commandes clients pour récolter données aux choix dans listes déroulantes

Nous l'affichons ainsi en mode exécution. Ce formulaire est donc découpé en trois zones. La première doit servir à désigner un client et à récolter ses informations. C'est la raison pour laquelle la liste déroulante Identifiant client est proposée. La deuxième doit servir à désigner les articles achetés et à restituer les données attachées. C'est pourquoi une seconde liste déroulante est présente. Elle est remplie des références des produits. La troisième zone est constituée de boutons et d'un sous formulaire. C'est dans ce sous formulaire que le détail de la commande doit être consolidé au fur et à mesure des produits achetés.
  • Cliquer sur la première liste déroulante et choisir un identifiant client,
  • Déployer la seconde liste déroulante et désigner une référence produit,
Comme vous le constatez, bien que ces listes soient préremplies, rien ne se produit à la sélection des valeurs. Dans la section Zone Client, nous devons remplir les zones de texte des informations correspondantes. Et, nous devons faire de même dans la zone Produit.

La source de contrôle de chaque contrôle TextBox doit donc être ajustée, selon l'information à rapatrier.

Extraire l'information d'une référence
Access propose une fonction tout à fait intéressante pour rechercher une information dans une table et extraire sa correspondance. Cette fonction se nomme RechDom. Elle requiert trois arguments, selon la syntaxe suivante :

=RechDom('[nom_champ]';'nom_table';'Critère')

Le troisième paramètre est facultatif. Il est cependant nécessaire dans notre cas. Il permet de définir la condition selon laquelle l'information doit être extraite. Cette condition consiste à trouver la référence de la liste déroulante dans le champ correspondant de la table. Cette table doit être stipulée en deuxième paramètre. Et le champ à partir duquel la donnée doit être importée, selon cette condition, doit être renseigné en premier paramètre. Comme vous le savez, dans la syntaxe Access, un nom de champ se définit toujours entre crochets.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Puis, dans la liste, choisir Mode création,
Nous basculons ainsi dans la vue en conception du formulaire. La feuille de propriétés est nécessaire. Elle est généralement placée sur la droite de l'écran. C'est le bouton Feuille de propriétés dans le ruban contextuel Création qui permet de l'afficher ou de la masquer.

Feuille de propriétés pour régler les sources de contrôles dynamiques sur un formulaire Access

Comme vous le savez, cette feuille de propriétés est contextuelle. Elle liste tous les attributs qu'il est possible de paramétrer pour le contrôle sélectionné sur le formulaire.
  • Dans la section Zone Client, sélectionner le contrôle sous l'étiquette Civilité,
  • Dans sa feuille de propriétés, activer l'onglet Données,
  • Dans sa propriété Source contrôle, saisir l'expression suivante :
=RechDom('[Client_civilite]';'Clients';'[Client_id]=Id')
  • Puis, valider la syntaxe par la touche Entrée du clavier,
Expression avec fonction Access RechDom pour extraire informations sur formulaire selon choix dans liste déroulante

Pour plus de confort, il est conseillé d'étirer la feuille de propriétés en largeur. Il est aussi possible d'utiliser un éditeur d'expression par Clic droit / Zoom.

Nous demandons d'extraire la donnée issue du champ Client_civilite depuis la table Clients pour laquelle l'identifiant du champ Client_id est identique à l'identifiant désigné dans la liste déroulante (Id).

Pour les quatre autres zones de texte de la même section, le critère et la table ne changent pas. Nous devons seulement adapter le nom du champ à rapatrier en premier paramètre de la fonction RechDom.
  • En sélectionnant les contrôles tour à tour, adapter la propriété Source contrôle avec les expressions respectives suivantes :
  • Pour le contrôle du nom : =RechDom('[Client_nom]';'Clients';'[Client_id]=Id'),
  • Pour le contrôle du prénom : =RechDom('[Client_prenom]';'Clients';'[Client_id]=Id'),
  • Pour le contrôle de la ville : =RechDom('[Client_ville]';'Clients';'[Client_id]=Id'),
  • Pour le contrôle du code postal : =RechDom('[Client_dep]';'Clients';'[Client_id]=Id'),
A ce stade, nous sommes censés avoir établi toutes les correspondances de la zone Client. Nous devrions donc extraire les informations respectives attachées à la référence choisie dans la liste déroulante.
  • Cliquer sur un emplacement vide du formulaire pour désactiver la dernière sélection,
  • Enregistrer les modifications (CTRL + S),
  • Puis, enfoncer la touche F5 du clavier pour exécuter le formulaire,
Au chargement de ce dernier, toutes les zones sont effectivement remplies des informations correspondant à l'identifiant désigné dans la liste déroulante. Access conserve en mémoire les derniers réglages établis.
  • Déployer la liste déroulante des identifiants clients,
  • Puis, choisir un autre numéro,
Cette fois, rien ne se produit. Pourtant, les expressions construites fonctionnent parfaitement. Pour actualiser les calculs, un formulaire Access doit déclencher un évènement. Cet évènement intervient par exemple au chargement lorsque nous exécutons ce dernier.
  • Dans le ruban Accueil, cliquer sur la flèche du bouton Affichage,
  • Dans la liste, choisir Mode création,
  • Puis, enfoncer de nouveau la touche F5 du clavier pour exécuter le formulaire,
Chargement dynamique des informations attachées au choix dans liste déroulante de formulaire Access

En effet, toutes les informations récoltées sont désormais actualisées selon le dernier identifiant que nous avions choisi. Cela signifie que nous devrons être en mesure de gérer l'évènement du choix d'une référence dans la liste déroulante. De cette manière, nous pourrons ordonner le recalcul pour actualiser les extractions dans les zones de texte.

Mais des compétences nous manquent encore. Il s'agit notamment des macros. Néanmoins, nous avons confirmation que ces travaux de préparation sont fonctionnels. Nous proposons de les poursuivre pour les extractions de la zone Produit. Et lorsque nous aurons appris et compris les macros, nous finaliserons cette fonctionnalité en générant les interactions nécessaires.
  • Revenir en mode conception du formulaire,
Dans la zone Produit, six zones de texte sont concernées par l'extraction d'information au choix d'une référence produit dans la liste déroulante. En deuxième paramètre, le nom de la table doit être adapté. Il s'agit désormais de la table Produits. En troisième paramètre, le critère doit vérifier l'égalité entre le champ produit_ref de la table et la valeur dans la liste déroulante. Cette dernière se nomme Reference.
  • Sélectionner la zone de texte du prix,
  • Dans l'attribut Source contrôle de sa feuille de propriétés, saisir l'expression suivante :
=RechDom('[produit_prix]';'Produits';'[produit_ref]=Reference')

Syntaxe de la fonction Access RechDom pour extraire dynamiquement les données sur un formulaire

Comme précédemment, nous n'avons plus qu'à répliquer cette expression pour tous les autres contrôles, en adaptant simplement le nom du champ à extraire en premier paramètre.
  • De fait, sélectionner tour à tour les contrôles restants et adapter l'expression comme suit :
  • Pour le contrôle de la désignation : =RechDom('[produit_nom]';'Produits';'[produit_ref]=Reference'),
  • Pour le contrôle du poids : =RechDom('[produit_poids]';'Produits';'[produit_ref]=Reference'),
  • Pour le contrôle des vues : =RechDom('[produit_vues]';'Produits';'[produit_ref]=Reference'),
  • Pour le contrôle du stock : =RechDom('[produit_stock]';'Produits';'[produit_ref]=Reference'),
  • Et pour le contrôle de la promo : =RechDom('[produit_code]';'Produits';'[produit_ref]=Reference'),
  • Enregistrer les modifications et exécuter le formulaire,
Chargement dynamique des références produits sur formulaire Access avec liste déroulante

Pour les mêmes raisons que celles évoquées précédemment, si vous n'aviez pas préalablement choisi un code article, les zones de saisie demeurent désespérément vierges. Dans ce cas, il faut choisir une référence dans la seconde liste déroulante, basculer en conception et exécuter de nouveau le formulaire.

Toutes les informations correspondantes sont donc parfaitement extraites, grâce à cette fameuse fonction Access RechDom. A l'avenir, avec les macros, nous devrons actualiser ces données au changement de l'utilisateur dans les listes déroulantes.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn