Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
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.
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.
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,  
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,  
 
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') 
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,  
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.