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.