Evènement lancé à partir de la création d'une table

cs_Famas54 Messages postés 59 Date d'inscription mardi 12 septembre 2006 Statut Membre Dernière intervention 21 août 2009 - 1 juil. 2008 à 09:59
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008 - 4 juil. 2008 à 07:29
Bonjour,

Je souhaite activer une partie de code VBA suite à un évènement qui serait la création d'une nouvelle table dans ma base de données, quels seraient les formules à utiliser pour cela? (je n'ai rien trouvé de très précis sur ce sujet)

Merci.

4 réponses

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
1 juil. 2008 à 10:32
salut,

pas possible avec ACCESS, il faut utiliser les TRIGGER = sqlserver, mysql5

<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008
3 juil. 2008 à 22:05
Bonjour,

Si, c'est possible (quasiment tout est posible).
Bien sûr, avec les fonctions standards, on ne peut pas, mais en contournant, on peut.
Je suis sous Linux là tout de suite, donc pas possible d'écrire un bout de code exact, mais voici l'idée :

    -> lancer un timer (API Windows SetTimer ou quelquechose comme ça, voir google -> AllApi.net pour des exemples). qui lancera l'exécution d'une procédure de son choix toutes les ? millisecondes (en fait, on passe à SetTime l'adresse de la procédure avec la fonction (standard) AddressOf )
    -> la dite procédure, qui sera appelé de manière automatique toutes les ? millisecondes, fera 3 choses :
            * une liste des tables existantes
             * comparaison de cette liste avec la liste précédente (lors du dernier appel à la procédure) -> passer par une variable globale pour stocker la liste précédente (dim maListe() as String ou as New Collection) OU par le stockage de la liste dans une table (mais cela ralentira probablement l'exécution : je préfère surcharger la mémoire vive en passant par une variable globale)
             * si la liste est différente, c'est qu'un table a été créée : soit on rentre dans une portion if endif (si une nouvelle table existe -> on rentre dans la partie if / endif, sinon, on fait rien), soit on appelle une 3ème procédure / fonction qui contiendra le code à exécuter en réponse à l'événement.

C'est du lourd, mais ça répond à ton besoin.
Pour éteindre le timer, fonction API KillTimer (ou quelquechose comme ça)

On pourrait penser que le timer te bouffe toute la mémoire vive : et bien, ce n'est pas le cas (j'ai déjà écrit des programmes avec 3 timers lancés en parralèle à partir d'Access sans que les perfs. du PC en souffre le moins du monde)
Au passage, on voit que c'est un moyen de lancer des threads parralèles avec VBA (donc Excel, Access...)
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
3 juil. 2008 à 22:20
thtdlx2
-> à moins que j'ai mal compris mais me semble que la demande est :
comment en VB.NET (ou VB2005/2008) faire que l'exécution d'une requête sous VBX vers ACCESS déclenche une macro du fichier .mdb en question

ce à quoi ce n'est pas possible

rappel :
<li> Vous êtes ici : [infomsg.aspx Thèmes] / [infomsgf_VB-NET-VB-2005_40.aspx VB.NET et VB 2005] / [infomsgt_BASE-DONNEES_235.aspx Base de données] / [infomsgt_ACCESS_661.aspx Access] / Evènement lancé à partir de la création d'une table</li>
<hr size="2" width="100%" />Prenez un instant pour répondre à [infomsg_SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp  
0
thtdlx2 Messages postés 17 Date d'inscription dimanche 10 octobre 2004 Statut Membre Dernière intervention 3 juillet 2008
4 juil. 2008 à 07:29
hum....ce n'est pas ce que j'ai compris....il parle de VBA....(bien qu'on soit dans cette rubrique, parler de VBA ne signifie pas parler de VB.NET ou VB2005 ou VB2008 ou encore VBX vers Access). Donc j'ai compris qu'on se cantonnait à des exécutions de code à partir d'Access sous Access, sans autre plateforme en plus...pour reproduire ce qu'on peut faire sous Excel avec le gestionnaire d'événements, dans lequel on peut déclencher des macros sur changement d'une feuille, changement d'une info dans une feuille, etc....
C'est ça que j'ai compris.
Bref : si j'ai bien compris, tant mieux pour Famas54. Sinon tant pis (cela dit, je maintiens que ma proposition doit trouver une adaptation à toutes les syntaxes et sur toutes les plateformes : je vois mal comment ça peut être "impossible")
0
Rejoignez-nous