Bonjour le forum,
on parle peu d’Access 2010 avec ses évènements de table (triggers) et pourtant…
La démonstration s’appuie sur une gestion de stock (simplifiée) avec le schéma suivant volontairement dénormalisé avec le champ QtteStock:
Le but est de tenir à jour le champ QtteStock suivant l’évènement produit dans la table des mouvements (insertion et/ou mise à jour). Comme nous interceptons les évènements sur TblMouvement grâce au mécanisme de triggers proposés par Access 2010, nous pouvons effectuer les saisies directement dans la table en mode "feuille de données".
Partons du jeu suivant :
Insérons une première entrée :
On vérifie que la table des articles est mise à jour :
Poursuivons avec quelques mouvements supplémentaires :
Chaque insertion a bien été prise en compte.
Que se passe-t-il si on insère une sortie de 100 scoubidous (zéro en stock) ?
Avant d’insérer la ligne (évènement : avant modification), on teste si le mouvement est possible. S’il ne l’est pas, la ligne ne peut être validée et un message apparait.
Testons la mise à jour d’un mouvement existant.
Le mouvement idMouvement=5 était en fait une entrée de 50 pommes :
Ah non, gouré ! Le mouvement idMouvement=5 était en fait une entrée de 50 scoubidous :
Et puis modifions totalement la ligne idMouvement=5 :
La mise à jour est OK dans tous les cas.
Bien entendu, avant toute mise à jour, on teste si le mouvement est possible. Essayons en modifiant une dernière fois ce mouvement idMouvement=5 :
Il reste le cas des suppressions de mouvements qui me pose encore quelques problèmes dans certains cas et qui n’est donc pas implémenté pour le moment.
Ci-joint le fichier GestionStock.accdb.
Un peu d’indulgence pour le code un peu cracra, je n’ai Access 2010 que depuis 15 jours mais le but était de montrer les nouvelles possibilités de programmation dans les évènements de table.
Quoi que la mise au point et le déboguage des macros de données m’a semblé peu évidente, je pressens quand même que de nombreux évènements vont prochainement être interceptés de cette manière plutôt que par du VBA dans les évènements des formulaires.
Et vous ?
Partager