formateur informatique

Formulaires de navigation et de suppression

Accueil  >  Bureautique  >  Access  >  Access Avancé  >  Formulaires de navigation et de suppression
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 :


Formulaires et macros de suppression

Dans l'exercice Access précédent, nous avons apporté la solution pour rendre opérationnels les formulaires de création encapsulés dans des formulaires de navigation. Ils interagissent en effet avec une macro et une requête dynamique. C'est cette dernière qui réalise l'insertion des données dans la table source, en prélevant les informations inscrites sur le formulaire, au moment de la demande. Et nous avons dû retravailler les expressions de correspondance pour atteindre les contrôles des formulaires, imbriqués dans une construction par onglets à deux niveaux. Ici, nous devons exploiter ces solutions pour que les formulaires de suppression puissent répondre à la demande, depuis le formulaire de navigation principal.

Sources et présentation de la problématique
Pour poursuivre la confection de notre application de gestion, nous devons commencer par réceptionner les travaux au dernier indice. Comme vous le remarquez, la décompression conduit au fichier de la base de données accompagné d'un fichier de type texte. Celui-ci archive la syntaxe à générer pour qu'une requête puisse prélever les informations encapsulées dans les formulaires de navigation à deux étages. Comme nous l'avons construite dans l'exercice précédent, nous proposons ici de l'exploiter directement.
  • Double cliquer sur le fichier de la base de données pour l'ouvrir dans Access,
  • A l'invite, saisir le mot de passe d'accès : abc,
  • Cliquer ensuite sur le bouton Activer le contenu du bandeau de sécurité,
  • Puis, du fait de la régénération, valider de nouveau le même mot de passe : abc,
L'accès est désormais déverrouillé. Le formulaire de navigation principal se propose par défaut, grâce à une macro Access AutoExec, que nous avions configurée.
  • Cliquer sur le dernier onglet à droite intitulé Outils actions,
  • Saisir le mot de passe administrateur : abc123,
Sous formulaires Access action et suppression imbriqués dans le formulaire de navigation principal

Nous accédons ainsi à la seconde navigation imbriquée. Les onglets sont disposés à la verticale. Ils permettent d'exploiter des formulaires agissant sur les données de la base.

Les deux premiers, Créer un client et Créer un produit, ont été résolus au cours de l'exercice précédent. Ils permettent désormais de créer un nouveau client ainsi qu'un nouvel article.

Ce sont les deux derniers onglets, Supprimer un client et Supprimer un produit, qui nous intéressent dans cet exercice. Dans les deux cas, une liste déroulante permet de sélectionner une référence à éliminer dans la table source.

Sous formulaire Access pour supprimer un client au choix identifiant dans liste déroulante

Au choix d'une valeur dans l'une comme dans l'autre, toutes les informations attachées sont rapatriées, à titre de confirmation. Pour cela, nous avions exploité la fonction Access RechDom. Et c'est une action de macro Access qui permet d'actualiser les informations. Bref, au fil des exercices, nous avons progressé. Désormais, au clic sur le bouton Supprimer, l'intégralité de l'enregistrement désigné par la référence, doit être supprimé de la table source.

Pour ce faire, nous avons besoin de bâtir des requêtes de suppression dynamiques. Elles doivent être en mesure de récolter l'identifiant choisi depuis le formulaire, au moment de la demande. Et comme ces formulaires sont imbriqués dans des navigations à deux niveaux, nous devons exploiter la syntaxe proposée dans le fichier texte, résultant de la décompression.
  • Dans le volet de navigation, cliquer droit sur la requête R_creer_client,
  • Dans le menu contextuel, choisir Mode création,
Nous basculons ainsi dans l'éditeur de requête. Cette dernière est exécutée au clic sur le bouton du formulaire F_creer_client. Elle récolte les informations qui sont inscrites dans les différents contrôles. Puis, elles les insère dans la table Clients pour créer un nouvel enregistrement.
  • Cliquer droit dans la zone Champ de la première colonne,
  • Dans le menu contextuel, choisir Créer,
Nous affichons ainsi le générateur d'expression. Il retranscrit explicitement la syntaxe établie pour réaliser la correspondance entre le contrôle Civilite du formulaire et le champ de destination Client_civilite de la table. C'est ainsi que sont prélevées les données au moment de la demande. Et à ce titre, du fait de l'imbrication des formulaires de navigation, vous notez la complexité de la syntaxe pour atteindre et désigner ces contrôles.

Expression de correspondance entre requête dynamique et sous formulaire Access imbriqué dans navigation à onglets

Pour animer les formulaires de suppression, nous devons fort logiquement construire des requêtes suppression. Mais avant d'agir, ces dernières doivent prélever l'identifiant désigné dans la liste déroulante du formulaire source. En conséquence, une expression semblable doit être bâtie.

Requêtes suppression dynamiques
Il est temps d'entrer dans le vif du sujet. Les deux requêtes suppression doivent être bâties avec les expressions de correspondance dynamiques. Ensuite, au clic sur le bouton du formulaire, elles doivent être exécutées par action de macro.
  • Fermer le générateur d'expression puis fermer la requête en cliquant sur la croix de son onglet,
  • Fermer le formulaire de navigation principal : _F_navig_principal,
Dans le volet de navigation, en queue de liste de la catégorie des requêtes, vous pouvez noter la présence d'une requête nommée : R_Suppr_ref. Il s'agit d'une requête paramétrée que nous avions construite à l'occasion d'un exercice sur les requêtes. Sous forme de boîte de dialogue, elle demande à l'utilisateur la référence de l'article à supprimer de la table source. Il suffit d'adapter ce critère paramétré avec l'expression de correspondance dynamique. Concernant la requête de suppression d'un client, aucun modèle n'existe. Nous devons donc la bâtir entièrement. Et nous proposons de commencer par cette dernière.
  • En haut de la fenêtre Access, cliquer sur l'onglet Créer pour activer son ruban,
  • Dans la section Requêtes du ruban, cliquer sur le bouton Création de requête,
  • Dans la boîte de dialogue qui suit, sélectionner la table Clients,
  • Puis, cliquer sur le bouton Ajouter et sur le bouton Fermer,
Nous basculons ainsi dans l'éditeur de requête Access. Nous devons transformer cette dernière. Par défaut, il s'agit d'une requête sélection.
  • Dans le ruban Créer, cliquer sur le bouton Suppression,
Nous transformons ainsi la requête classique en requête action pour supprimer des enregistrements. Faut-il encore les définir. Et ce critère est dynamique. Il dépend de la référence choisie par l'utilisateur sur le formulaire, par le biais de la liste déroulante. A ce titre, vous notez l'apparition d'une ligne nommée Supprimer, dans la grille de requête. Elle permet de définir l'opérateur de la clause WHERE, soit de la condition à remplir. Pour supprimer un enregistrement complet, il suffit simplement de désigner le champ sur lequel la condition doit être satisfaite. Et ce champ correspond à celui de l'identifiant sélectionné depuis le formulaire.
  • Dans la zone Champ, choisir le champ Client_id,
Comme vous pouvez le voir, les zones Table et Supprimer se remplissent automatiquement. Il ne nous reste plus qu'à définir le critère de suppression. Il dépend de l'identifiant choisi depuis le formulaire, au moment de la demande.
  • A la racine du dossier de décompression, double cliquer sur le fichier texte,
  • Sélectionner intégralement l'expression de correspondance (CTRL + A) :
[Formulaires]![_F_navig_principal]![SousFormulaireNavigation].[Formulaire]![SousFormulaireNavigation].[Formulaire]!
  • La copier par le raccourci clavier CTRL + C par exemple,
  • Fermer le fichier texte et revenir dans l'éditeur de requête Access,
  • Pour la première colonne, cliquer droit dans la zone Critères,
  • Dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
  • Coller la syntaxe de l'expression de correspondance (CTRL + V),
  • A la fin de l'expression, ajouter le nom du contrôle issu du formulaire entre crochets,
L'expression finalisée devient :

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

Comme cette expression de correspondance est inscrite dans la zone de critères du champ Client_id, la requête suppression doit éliminer l'enregistrement dont l'identifiant concorde.
  • Cliquer sur le bouton Ok du générateur d'expression pour valider la syntaxe,
  • Puis, enregistrer la requête (CTRL + S), sous le nom : R_Suppr_client,
  • Ensuite, fermer la requête en cliquant sur la croix de son onglet,
Nous devons désormais préparer la requête permettant de supprimer dynamiquement un produit.
  • Dans le volet de navigation, cliquer droit sur la requête R_Suppr_ref,
  • Dans le menu contextuel, choisir Mode création,
Nous basculons dans l'éditeur de la requête suppression. Vous notez bien la présence d'un critère paramétré posé sur le champ produit_ref de la clé primaire.
  • Cliquer droit sur cette zone de critères,
  • Puis, dans le menu contextuel, choisir Créer pour afficher le générateur d'expression,
  • Sélectionner l'intégralité de la syntaxe présente (CTRL + A) et la supprimer,
  • A la place, coller l'expression de correspondance issue du fichier texte,
  • A la fin de la syntaxe, ajouter le nom du contrôle correspondant sur le formulaire,
La syntaxe finalisée de l'expression de correspondance dynamique devient la suivante :

[Formulaires]![_F_navig_principal]![SousFormulaireNavigation].[Formulaire]![SousFormulaireNavigation].[Formulaire]![Reference]
  • Cliquer sur le bouton Ok du générateur d'expression pour revenir dans l'éditeur de requête,
  • Enregistrer la requête (CTRL + S) et la fermer,
Exécuter les requêtes suppression
Ces requêtes dynamiques doivent désormais être déclenchées depuis les formulaires respectifs, au clic sur le bouton. Souvenez-vous, ces formulaires sont utilisés dans les systèmes de navigation imbriqués et pas indépendamment. C'est la raison pour laquelle nous avons construit ces syntaxes complexes, afin d'atteindre les contrôles. Ce sont donc des actions de macro qui doivent être générées sur évènement. Mais avant cela, nous proposons de consulter les tables Clients et Produits. L'objectif est de repérer les enregistrements à supprimer. Ainsi, à l'issue de l'opération, en constatant leur absence, nous pourrons confirmer que les formulaires sont fonctionnels.
  • Dans le volet de navigation, double cliquer sur la table Clients pour l'ouvrir,
  • Puis, atteindre la fin des enregistrements à l'aide de l'ascenseur vertical,
Table Access des enregistrements clients pour suppression par formulaire de navigation

Nous choisirons de réaliser un test de suppression sur l'avant dernier client, reconnu par l'identifiant 46.
  • Fermer la table Clients et ouvrir la table Produits,
En ligne 222, il existe un article que nous avions inséré à titre de test, dans l'exercice précédent pour aboutir les formulaires imbriqués de création.

Table Access des articles pour suppression par formulaire de navigation

Sa référence est BZXH123TT.
  • Fermer la table Produits,
  • Dans le volet de navigation, cliquer droit sur le formulaire F_suppr_client,
  • Dans le menu contextuel, choisir Mode création,
  • Sur le formulaire en conception, sélectionner le bouton Supprimer,
  • Activer ensuite l'onglet Evènement de sa feuille de propriétés,
  • Cliquer alors sur le petit bouton placé à droite de son évènement Au clic,
Appeler générateur de macro au clic sur le bouton de suppression du formulaire Access

Une boîte de dialogue apparaît. Elle propose plusieurs méthodes pour enclencher des actions.
  • Sélectionner Générateur de macro et cliquer sur le bouton Ok,
Nous basculons ainsi dans l'éditeur de macro Access. Une liste déroulante se propose pour choisir et définir les actions à déclencher. Mais avant cela, nous devons disposer de toutes les options disponibles. Comme nous l'avons expliqué dans l'exercice précédent, l'exécution d'une requête action déclenche des alertes système. Pour les neutraliser, nous devons paramétrer l'action Avertissements en entête de la liste des tâches. Mais cette dernière n'est pas proposée par défaut. Nous devons activer son affichage.
  • Dans le ruban Création, cliquer sur le bouton Afficher toutes les actions,
  • Au centre de l'éditeur, déployer la liste déroulante,
  • Choisir l'action Avertissements et conserver son attribut réglé sur Non,
  • Déployer la liste déroulante du dessous et choisir l'action OuvrirRequête,
  • Dans la zone Nom de la requête, désigner la requête R_Suppr_client,
  • Dans la zone Mode de données, choisir Lecture seule,
Actions de macro Access pour exécuter requête dynamique de suppression au clic sur bouton de formulaire

Notre macro est terminée. Et comme vous le constatez, nous ne testons pas si l'utilisateur a bien défini un identifiant. Nous pourrions le faire grâce à une instruction conditionnelle Si. Mais ce n'est pas nécessaire. Si aucun identifiant n'est stipulé, la requête échoue car son critère ne trouve aucune correspondance. Et comme nous avons neutralisé les alertes, aucun message disgracieux n'apparaîtra.

Pour apporter confirmation à l'utilisateur, il peut néanmoins être intéressant de déclencher un message de confirmation à l'issue du traitement. Pour cela, il suffit d'ajouter et de paramétrer l'action ZoneMessage.

Action de macro Access pour confirmer par message bon déroulement du traitement au clic sur bouton de formulaire

Avant de tester le bon fonctionnement de cette macro, nous devons paramétrer le bouton destiné à fermer le formulaire. Certes, il ne sera utile que lorsque ce dernier sera utilisé indépendamment. Dans le contexte des onglets, il suffit de basculer sur un autre outil. Mais dans le contexte de l'apprentissage des macros, ces manipulations sont intéressantes.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, sélectionner le bouton Fermer Formulaire,
  • Dans sa feuille de propriétés, cliquer sur le bouton de son événement Au clic,
  • Dans la boîte de dialogue qui suit, choisir Générateur de macro et valider par Ok,
  • Dans l'éditeur de macro, choisir l'action FermerFenêtre,
  • Régler son attribut Type d'objet sur Formulaire,
  • Régler son attribut Nom d'objet sur F_suppr_client,
  • Définir son attribut Enregistrer sur Oui pour éviter les alertes de confirmation,
Action de macro Access pour fermer le formulaire au clic sur un bouton

Désormais, il est temps de tester le bon fonctionnement de ce premier formulaire de suppression.
  • Dans le ruban Création, cliquer sur le bouton Enregistrer puis sur le bouton Fermer,
  • De retour sur le formulaire, cliquer sur l'icône de la disquette dans la barre d'accès rapide,
Il est en effet nécessaire de l'enregistrer à son tour pour mettre à jour les liaisons avec les macros.
  • Fermer le formulaire en cliquant sur la croix de son onglet,
  • Puis, exécuter le formulaire _F_navig_principal,
  • Cliquer sur son dernier onglet Outils actions,
  • Taper le mot de passe administrateur abc123,
  • Accéder au formulaire de suppression par l'onglet Supprimer un client,
  • Avec la liste déroulante, choisir l'identifiant 46,
Comme vous le remarquez, toutes les informations attachées sont importées à titre de confirmation avant de procéder. Il s'agit bien du client Emile Feuille. C'est la fonction Access RechDom actualisée par l'action de macro AfficherTousEnreg qui produit ce résultat.
  • Cliquer alors sur le bouton Supprimer,
Message de confirmation du client supprimé au clic sur bouton de formulaire Access

Le message de confirmation surgit. Il semble attester que le processus s'est correctement déroulé.
  • Valider ce message puis ouvrir la table Clients,
  • Ensuite, atteindre la fin de ses enregistrements,
Enregistrement client supprimé dans la table par action de macro depuis un formulaire de suppression

Comme vous le remarquez, le client Emile Feuille d'identifiant 46 a parfaitement été éliminé. Nous avons donc réussi à générer une expression de correspondance entre une requête suppression et les contrôles d'un formulaire imbriqués dans une navigation à deux niveaux. En effet, nous l'avions démontré, il est beaucoup plus aisé de produire un formulaire de suppression indépendant.

Au fil des exercices, nous finalisons le développement des outils. Notre application de gestion devient peu à peu fonctionnelle.

A titre de mise en pratique, vous devez désormais rendre fonctionnelle la suppression d'article depuis le formulaire F_suppr_produit, dans le cadre d'une exploitation par navigation au sein du formulaire _F_navig_principal.

Tout d'abord, vous devez engager l'action permettant de fermer le formulaire, au clic sur le deuxième bouton.

Fermer le formulaire Access au clic sur un bouton

Ensuite, vous devez empiler les actions permettant de déclencher la requête suppression, au clic sur le premier bouton.

Actions de macro Access pour supprimer un produit de la table au clic sur un bouton de formulaire

Vous ne devez pas oublier d'enregistrer le formulaire à l'issue des modifications. Après un test depuis le formulaire de navigation sur la référence BZXH123TT, vous pourrez constater que son enregistrement est effectivement supprimé de la table source.

 
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