formateur informatique

Formulaires de navigation et de mise à jour

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Formulaires de navigation et de mise à jour
Livres à télécharger


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

Abonnez-vous gratuitement à la chaîne Youtube Rossetti Stéphane .
Sujets et formations similaires :


Formulaire de navigation et actualisations

Dans cet exercice Access, nous poursuivons les travaux consistant à rendre opérationnels les formulaires d'action. Souvenez-vous, ils sont imbriqués dans des formulaires de navigation à onglets à deux niveaux. Dans les deux exercices précédents, le défi avait consisté à réaliser la correspondance entre des requêtes dynamiques et les formulaires encapsulés. Désormais, dans ce système de navigation, il est possible de créer un client comme un article mais aussi d'en supprimer. Il nous reste à permettre la mise à jour des informations depuis le dernier formulaire d'action. Le procédé est similaire. Mais la nature de la requête dynamique change.



Source et présentation de la problématique
L'application progresse à l'occasion de chaque exercice. Pour poursuivre sa conception, nous devons la réceptionner à l'indice des dernières solutions abouties. La décompression fournit le fichier de la base de données associé à un fichier de type texte. Celui renferme la syntaxe de correspondance permettant d'atteindre les contrôles des formulaires imbriqués dans ce système de navigation à deux niveaux. Comme nous l'avions construite à l'occasion d'un exercice et qu'elle est complexe, nous proposons ici de la réceptionner. Nous concentrerons ainsi les efforts sur la fabrication des requêtes et sur leur déclenchement.
  • Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
  • Dans la boîte de dialogue qui apparaît, taper le mot de passe d'accès : abc,
A validation, l'accès est ouvert et le formulaire de navigation se propose par défaut.
  • Cliquer sur le bouton Activer le contenu du bandeau de sécurité,
Cette action, nécessaire une seule fois, a pour effet de regénérer la base de données. De fait, le mot de passe doit être de nouveau renseigné.
  • Taper le mot de passe abc et valider par Ok,
  • Cliquer sur le dernier onglet (Outils actions) du formulaire de navigation,
  • Saisir le mot de passe administrateur : abc123, puis valider,
Comme vous le savez, une seconde navigation par onglets est offerte. Elle est cette fois proposée à la verticale. Chaque onglet permet d'atteindre un formulaire d'action. C'est la raison pour laquelle leur accès est protégé par un mot de passe administrateur.

Les deux premiers onglets permettent respectivement de créer un nouveau client et un nouveau produit. Nous avons abouti le développement de leur formulaire dans un exercice récent.

Les deux derniers onglets permettent respectivement de supprimer un client et de supprimer un produit. Nous avons finalisé leur conception dans l'exercice précédent.
  • Cliquer sur l'onglet du milieu intitulé : Actualiser un produit,
Nous atteignons ainsi le formulaire F_maj_produit. Grâce à lui, l'administrateur doit pouvoir actualiser le stock ou le tarif d'un produit désigné par la liste déroulante.

Formulaire Access pour mettre à jour le stock ou le tarif du produit désigné dans la table source

Si vous choisissez une référence article, vous remarquez que toutes les informations attachées sont rapatriées dans les contrôles dédiés. Ces données servent de confirmation avant actualisation. Dès lors, l'administrateur peut renseigner une nouvelle valeur de stock ou un nouveau prix. C'est pourquoi, il existe des zones de saisie vierges dans la deuxième section de ce formulaire. Pour procéder à la mise à jour, l'utilisateur doit ensuite cliquer sur l'un des deux boutons proposés juste en-dessous. Ils doivent enclencher une action de macro exécutant la requête de mise à jour appropriée. Cette macro doit d'abord s'assurer que la saisie n'est pas vierge. A ce titre, nous avons appris à imbriquer les actions dans des instructions conditionnelles. Mais avant cela, nous devons donc bâtir ces requêtes dynamiques d'actualisation.



Requêtes dynamiques de mise à jour
Dans les exercices sur les requêtes, nous avons appris à créer ce type d'outil. L'actualisation d'un enregistrement dépend d'un critère, celui de la référence choisie depuis le formulaire. La mise à jour dépend de la valeur saisie par l'administrateur. Deux expressions dynamiques de correspondance sont donc à concevoir.
  • Fermer le formulaire de navigation principal en cliquant sur la croix de son onglet,
  • Dans le volet de navigation, cliquer droit sur la requête R_MAJ_TS_Prix,
  • Dans le menu contextuel, choisir Mode création,
Nous basculons ainsi dans la vue en conception de la requête paramétrée de mise à jour.

Vous notez en effet la présence de la condition émise sur la référence de l'article. Il s'agit d'une question entre crochets, destinée à l'utilisateur. Elle est inscrite dans la zone Critères du champ produit_ref. Nous devons la remplacer par la contrainte dynamique, traduite par la référence désignée depuis le formulaire.

De même, vous notez la présence de la syntaxe de mise à jour dans la zone du même nom du champ produit_prix. Elle consiste à majorer le prix de l'article désigné de 5%. Nous devons remplacer cette syntaxe par la valeur saisie par l'utilisateur dans la zone dédiée, issue du formulaire.

Requête Access paramétrée pour actualiser les prix des articles selon la référence renseignée

Sur le formulaire, la liste déroulante des références est nommée Reference. C'est elle que nous devons désigner dans le critère. La zone de saisie pour la mise à jour du prix est nommée Tarif_maj. C'est elle que nous devons pointer pour la syntaxe de mise à jour.
  • A la racine du dossier de décompression, double cliquer sur le fichier texte pour l'ouvrir,
  • Sélectionner toute la syntaxe par le raccourci clavier CTRL + A par exemple,
  • La copier par le raccourci clavier CTRL + C,
  • Puis, revenir dans l'éditeur de requête Access,
  • Dès lors, cliquer droit dans la zone Critères du champ produit_ref,
  • Dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
  • Réaliser de nouveau le raccourci CTRL + A pour supprimer l'actuelle syntaxe,
  • Enfoncer la touche Suppr pour l'effacer,
  • Puis, coller la syntaxe prélevée à l'aide du raccourci clavier CTRL + V,
Cette syntaxe permet de descendre jusqu'aux derniers formulaires encapsulés dans cette construction par onglets à deux étages. Nous devons la compléter en désignant le contrôle à atteindre, celui de la référence article, servant de critère à la mise à jour de l'enregistrement.
  • A la fin de la syntaxe, ajouter le nom du contrôle entre crochets, soit [Reference],
  • Cliquer sur le bouton Ok du générateur pour valider l'expression,
La syntaxe de correspondance dynamique du critère est donc la suivante :

[Formulaires]![_F_navig_principal]![SousFormulaireNavigation].[Formulaire]![SousFormulaireNavigation].[Formulaire]![Reference]

De la même façon, nous devons établir la liaison dynamique pour la mise à jour du prix.
  • Cliquer droit dans la zone Mise à jour du champ produit_prix,
  • Dans le menu contextuel, choisir Créer,
  • Dans le générateur d'expression, sélectionner et supprimer la syntaxe en cours,
  • Coller (CTRL + V) la syntaxe de correspondance prélevée depuis le fichier texte,
  • A la suite et entre crochets, ajouter le nom du contrôle à atteindre, soit [Tarif_maj],
  • Valider l'expression de correspondance en cliquant sur le bouton Ok,
La syntaxe complète pour la mise à jour est donc la suivante :

[Formulaires]![_F_navig_principal]![SousFormulaireNavigation].[Formulaire]![SousFormulaireNavigation].[Formulaire]![Tarif_maj]
  • Enregistrer la requête puis la fermer,
La liaison dynamique pour l'actualisation conditionnelle des tarifs est donc prête. Nous devons maintenant préparer celle permettant l'actualisation des stocks. Comme le procédé est identique, nous proposons de dupliquer la requête précédente. Ainsi, le critère sera déjà défini. Nous n'aurons plus qu'à adapter la contrainte de mise à jour.
  • Dans le volet de navigation, sélectionner la requête R_MAJ_TS_Prix,
  • La copier (CTRL + C) puis la coller (CTRL + V),
  • A l'invite, la renommer R_MAJ_Stocks, puis valider,
  • Toujours dans le volet de navigation, cliquer droit sur cette copie,
  • Puis, choisir Mode création dans le menu contextuel,
  • Dans la zone Champ de la première colonne, remplacer produit_prix par produit_stock,
  • Puis, cliquer droit dans la zone Mise à jour,
  • Ensuite, choisir Créer dans le menu contextuel,
  • A la fin de l'expression, remplacer le champ Tarif_maj par le champ Stock_maj,
Syntaxe Access de requête mise à jour pour correspondance avec les contrôles des sous formulaires à onglets

Comme nous le disions, le critère est identique. Il dépend de la référence article. Nous n'avons plus qu'à sauvegarder cette requête.
  • Cliquer sur le bouton Ok du générateur d'expression,
  • Puis, enregistrer et fermer la requête,


Formulaire de mise à jour
C'est le clic sur l'un ou l'autre bouton du formulaire qui doit déclencher l'exécution de la requête associée. Et comme nous le savons pertinemment désormais, les actions de macro sont particulièrement dédiées.
  • Dans le volet de navigation, cliquer droit sur le formulaire F_maj_produit,
  • Dans le menu contextuel, choisir Mode création,
  • Dans la vue du formulaire en conception, sélectionner le bouton MAJ Stock,
  • Activer ensuite l'onglet Evénement de sa feuille de propriétés,
  • Puis, cliquer sur le petit bouton à l'extrémité droite de son événement Au clic,
  • Dans la boîte de dialogue qui suit, choisir Générateur de macro et valider par Ok,
Nous basculons ainsi dans l'éditeur de macro Access. Comme nous l'avons évoqué lors des deux exercices précédents, l'exécution d'une requête action déclenche des alertes système que nous ne souhaitons pas voir apparaître. Pour les neutraliser, une action de macro spécifique est nécessaire. Mais elle n'est pas disponible par défaut.
  • Dans le ruban Création, cliquer sur le bouton Afficher toutes les actions,
Désormais, l'intégralité de la librairie des actions de macro est disponible.
  • Dans l'éditeur, déployer la liste déroulante et choisir l'action Avertissements,
  • Conserver son attribut Avertissements actifs réglé sur Non,
  • Déployer la liste déroulante du dessous et choisir la commande Si,
En effet, avant d'exécuter la requête de mise à jour, nous devons nous assurer que l'utilisateur a bien renseigné une valeur dans le contrôle Stock_maj.
  • Dans la zone Expression conditionnelle, saisir le critère suivant : [Stock_maj]<>'' ,
  • Déployer la liste déroulante de l'instruction conditionnelle et choisir l'action OuvrirRequête,
  • Dans la zone Nom de la requête, choisir R_MAJ_Stocks,
  • Régler l'attribut Mode de données sur Lecture seule,
  • Déployer la liste déroulante du dessous et choisir l'action ZoneMessage,
  • Dans la zone Message, taper l'indication de confirmation suivante : Le stock a été mis à jour,
  • Régler l'attribut Bip sur Non,
  • Dans la zone Titre, taper le texte suivant : Confirmation,
  • En bas à droite du bloc conditionnel, cliquer sur le lien Ajouter sinon,
  • Déployer la liste déroulante qui se propose,
  • Choisir de nouveau l'action ZoneMessage,
  • Renseigner le texte suivant : Une quantité de stock doit être saisie,
  • Puis, renseigner les deux autres attributs comme précédemment,
Action conditionnelle de macro Access pour actualiser les stocks dans la table depuis le formulaire si quantité saisie

La macro est terminée. Si le nouveau stock est renseigné, la requête est exécutée. Le cas échéant, un message est adressé à l'utilisateur.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, cliquer sur la disquette dans la barre d'accès rapide,
Ainsi, nous mettons à jour la liaison entre le bouton et la macro déclenchée au clic.
  • Fermer le formulaire en cliquant sur la croix de son onglet,
En effet, il n'est pas amené à être exploité indépendamment.
  • Exécuter le formulaire _F_navig_principal,
  • Cliquer sur l'onglet Outils actions,
  • Saisir le mot de passe administrateur : abc123,
  • Dans la navigation verticale, cliquer sur l'onglet Actualiser un produit,
  • Choisir la première référence proposée par la liste déroulante,
  • Puis, cliquer directement sur le bouton MAJ Stock,
Mise à jour des stocks refusée depuis formulaire Access par macro conditionnelle car quantité non renseignée

En l'absence d'indication pour la mise à jour, l'action de la branche Sinon de l'instruction conditionnelle se déclenche. Le message indique à l'administrateur le défaut à corriger.
  • Valider cette boîte de message,
  • Saisir une quantité supérieure au stock actuel dans la zone Nouveau stock,
  • Puis, cliquer de nouveau sur le bouton MAJ Stock,
Cette fois, c'est la boîte de dialogue de la première branche de l'instruction conditionnelle qui se déclenche. Elle semble indiquer que le stock de l'article désigné a correctement été approvisionné.
  • Dans le volet de navigation, double cliquer sur la table Produits pour afficher son contenu,
  • Cliquer sur la flèche de l'entête du champ produit_ref,
  • Dans la liste, choisir un tri croissant,
De cette manière, l'article que nous avons mis à jour apparaît en tête de liste.

Confirmation actualisation stock dans table articles par action de macro depuis formulaire Access

Une action de macro supplémentaire aurait suffi à apporter la confirmation. Nous la connaissons bien. Elle consiste à actualiser les liaisons et les données. Elle se nomme AfficherTousEnreg. Elle doit intervenir dans la première branche de l'instruction conditionnelle, à l'issue des traitements.

A titre de mise en pratique, vous devez désormais paramétrer le deuxième bouton pour la mise à jour du tarif. Le principe est tout à fait identique. Seule la macro à exécuter doit être adaptée. Il s'agit de R_MAJ_TS_Prix.

Action de macro pour mettre à jour les tarifs dans la table depuis un formulaire Access

Un test depuis le formulaire de navigation principal démontre l'actualisation instantanée du tarif pour l'article désigné.

 
Sur Facebook
Sur G+
Sur Youtube
Les livres
Contact
Mentions légales



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