IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros Access Discussion :

Macro de Données Aprés MAJ [AC-2010]


Sujet :

Macros Access

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    consultant environnement et développement d'applications de base de données
    Inscrit en
    Janvier 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : consultant environnement et développement d'applications de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2006
    Messages : 336
    Par défaut Macro de Données Aprés MAJ
    Bonjour

    Je tente d'introduire des macros de données dans mes applications...mais j'ai un petit souci.
    Je lance une macro de mise à jour de la valeur de la table B lorsque un enregistrement de la table A est modifié qui fait appel à une fonction vba de calcul de somme mais systématiquement, mon calcul ne prend pas la nouvelle valeur mise à jour dans l'enregistrement A mais l'ancienne valeur...comme si l'évènement avait lieu AVANT la mise à jour et non aprés...
    j'ai pourtant fait un test avec des variables locales renvoyant monChamp et ancien.monChamp et là, j'ai bien les 2 valeurs différentes... est-ce qu'il est possible que lorsque je lance une faonction vba ou que je passe par une requête externe, la mise à jour ne soit pas encore prise en compte ?
    je ne sais pas si je suis bien clair...

  2. #2
    Membre éclairé
    Homme Profil pro
    consultant environnement et développement d'applications de base de données
    Inscrit en
    Janvier 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : consultant environnement et développement d'applications de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2006
    Messages : 336
    Par défaut
    bon, je m'auto réponds car j'ai continué mes tests.
    quand je stop ma fonction vba qui doit me renvoyer une valeur (qui je rappel n'est pas bonne car la mise à jour n'est pas encore prise en compte) et que je vais faire un tour sur la table en mode feuille de données, la modification n'est effectivement pas encore visible, ce qui explique que ma fonction vba ou ma requête ne prend pas la dernière modif mais la précédente. je pense que la modif est visible à l'intérieur de notre macro de données mais pas encore véritablement sur la table sous-jacente.
    il faudrait une sorte d'actualisation de la modif de la table avant de lancer ma fonction vba...

  3. #3
    Membre émérite
    Inscrit en
    Août 2008
    Messages
    740
    Détails du profil
    Informations forums :
    Inscription : Août 2008
    Messages : 740
    Par défaut
    D'une maniere generale j'ai aussi constate ton probleme, les macro de donnes et les fonctions VBA (bien que l'appel d'une fonction VBA est possible a partir d'une macro de donnees) ne peuvent cohabiter dans des mises a jour enchainees.

    la recommendation, c'est de faire le max du max dans les macro de donnees, avec un peu de pratique on s'apercoit qu'on en fait de plus en plus.

    Pour redonner le "controle a VBA" il m'arrive d'utiliser un artifice qui necessite d'avoir une forme active:
    - avant de commencer les traitements de macro de donnees je mets une Tempvar a 1
    - a la fin des traitements de donnees je passe cette TempVar a 0 via un appel de function
    - la forme active possede un timer de 500 et un evenement qui detecte le passage a 0 de la TempVar, et qui donne le "controle a VBA"... un peu alambique, mais ca marche

  4. #4
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Bonjour,

    Ce n'est pas un comportement anormal mais même plutôt rassurant. La macro de données est lancée dans une transaction qui n'est cloturée en Commit qu'à la fin de la macro. La fonction VBA, elle, va travailler dans une autre transaction. Les données non "commitées" dans la première ne sont donc pas disponibles.

    Le VBA devrait se limiter dans ce cas à des fonctions n'opérant pas d'accès aux données, uniquement des traitements sur des paramètres passés si besoin (replace amélioré, etc)

  5. #5
    Membre éclairé
    Homme Profil pro
    consultant environnement et développement d'applications de base de données
    Inscrit en
    Janvier 2006
    Messages
    336
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : consultant environnement et développement d'applications de base de données
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2006
    Messages : 336
    Par défaut
    OK merci pour vos réponses avisées. J'avis également pris le parti de n'utiliser le vba dans les macros de données que pour une seule utilisation : renvoyer un code de l'utilisateur courant loggé sur la dorsale lors des modifications d'enregistrement. Je lance mes fonctions vba directement sur les formulaires du coup (mais c'est plus dangereux car, si par hasard, j'ai oublié de programmer un évènement... ou si l'utilisateur fait la modif depuis une requête... mais bon, c'est à moi d'être vigilant !).
    Merci

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 31/03/2015, 11h53
  2. Réponses: 2
    Dernier message: 20/03/2014, 17h30
  3. [AC-2010] Macro de données après MAJ
    Par Kanigui dans le forum Macros Access
    Réponses: 3
    Dernier message: 22/12/2013, 14h29
  4. [XL-2002] Message "Pour éviter la perte de données.." apres un RefreshStyle par macro
    Par Williamm dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 12/08/2011, 11h35
  5. Récupérer ses données après formatage
    Par Sékiltoyai dans le forum Composants
    Réponses: 7
    Dernier message: 21/04/2007, 18h01

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo