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

VBA Access Discussion :

Executer une fonction dans une autre base de donnees


Sujet :

VBA Access

  1. #1
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut Executer une fonction dans une autre base de donnees
    Bonjour,

    J'effectue des operation dans une base de donnees A. Mais a un moment, j'ai besoin d'executer une fonction dans une base de donnees B avant de revenir travailler dans la BDD A.

    Ce passage d'une BDD a l'autre est manuel et prend pas mal de temps (vu que je dois le faire plusieur fois).
    Mon idee est de lancer la BDD B depuis le code de la A, de lancer la fonction aussi par le code, puis de fermer cette BDD une fois la fonction executee.

    Pour ouvrir la BDD B, aucun problemes.
    Mais ca se complique pour lancer le code.
    J ai essayer d'utiliser la fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.RunCommand("LeNomDeMaFonction")
    mais cela ne marche pas...

    Autre probleme: Comment puis je detecter la fin de l'execution de cette fonction pour fermer ma BDD B?

    Merci pour vos reponses!!!
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  2. #2
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Bonjour,

    Et bienvenue sur le forum...

    A voir si cela peut répondre à ton besoin, mais une solution très simple serait de référencer ta BDD B dans la BDD A.

    Dès ce moment, ta fonction de la BDD B peut-être appelée comme n'importe quelle fonction depuis la BDD A.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  3. #3
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Re, et merci pour la reponse rapide. Je suis nouveau mais pas tant que ca! Je frequentais souvant le forum pour trouver reponse a mes question mais vu que cette fois je n ai rien trouve, j'ai passe le cap de l'inscription!

    En fait le truc c'est que ma BDD B est plus un outil qu'une vraie base de donnees, avec une interface graphique et tout. Donc si je fais que lancer la fonction ca ne marchera pas directement...
    Mais c'est une solution, il faut juste que je supprime toutes les commandes graphique du code.

    Sinon, je suis partit sur une autre voie, pas tres carree mais se rapprochant plus de la simulation de l'action par le user:
    - Je lance ma BDD B depuis la A
    - Lors du lancement, j'ouvre un form qui lance la fonction (grace a la balise onload)
    - A la fin de la fonction, j'ai rajoute un DoCmd.Quit

    Donc jusque la tout se passe tres bien. Mais mon probleme maintenant est de redonner la main a ma BDD A pour qu'elle continue son boulot!
    Apres le lancement de la BDD B, je pensais faire une boucle qui regarde frequemment si elle est toujours ouverte. Des qu'elle voit qu'elle n'est plus ouverte, elle peut passer a la suite. Mais je n'arrive justement pas a detecter la fermeture de la BDD B...

    Alors si vous avez une idee!
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  4. #4
    Membre actif
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Octobre 2007
    Messages
    169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Somme (Picardie)

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2007
    Messages : 169
    Points : 241
    Points
    241
    Par défaut
    Je crois avoir trouve la solution tout seul.

    Il suffit de faire une boule while qui detecte si la fenetre est visible (BBD_B.Application.Visible = True)
    Des que c'est False, on peut passer a la suite...
    Lionel Garnier

    N'oubliez pas de voter pour les posts en cliquant sur le
    Cliquez sur le bouton lorsque vous êtes satisfaits de la réponse!
    mon site pro

  5. #5
    Expert éminent sénior
    Avatar de Domi2
    Homme Profil pro
    Gestionnaire
    Inscrit en
    Juin 2006
    Messages
    7 194
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 64
    Localisation : Suisse

    Informations professionnelles :
    Activité : Gestionnaire
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Juin 2006
    Messages : 7 194
    Points : 16 044
    Points
    16 044
    Par défaut
    Re,

    On peut faire plus que d'exécuter une fonction en utilisant une BDD comme librairie.

    Regarde ici, c'est peut-être une piste à suivre.

    Domi2
    Vous avez des montres, nous avons le temps ! (citation attribuée à L.-S. Senghor)

    Ici, on ne perd pas de temps ! On en passe...


    Access : créer des codes-barres 128 en VBA
    Access : les commandes intégrées des menus

    Ce message (ou un autre) vous a aidé ? Votez pour lui avec

  6. #6
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour,

    Il est aussi possible d'exécuter une procédure publique (Sub ou Function) d'une application Access "externe" (pilotée par l'Automation) à laquelle on accède grâce à CreateObject ou GetObject.
    Il faut utiliser la méthode Run de l'objet Application qui accepte aussi de transmettre des arguments et de retourner la valeur pour un appel de fonction.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim oApp As Access.Application
     
    Set oApp = GetObject("C:\Ici\MonFichierDéjàOuvert.mdb")
    oApp.Run "MaProcédure"
    Citation Envoyé par yonnel Voir le message
    Autre probleme: Comment puis je detecter la fin de l'execution de cette fonction pour fermer ma BDD B?
    Avec cette technique, il n'y a pas de problème de détection de la fin d'exécution: tout se passe dans le même flux d'exécution.

    Citation Envoyé par yonnel Voir le message
    Ce passage d'une BDD a l'autre est manuel et prend pas mal de temps (vu que je dois le faire plusieur fois).
    Pourquoi ne pas laisser cette base ouverte pendant toute la durée du traitement ?
    _

Discussions similaires

  1. Appel d'une fonction dans une fonction d'une même classe
    Par script73 dans le forum Général Python
    Réponses: 3
    Dernier message: 06/03/2015, 10h18
  2. portée d'une variable dans une fonction dans une méthode
    Par laurentg2003 dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 29/06/2009, 19h05
  3. [POO] dans une classe, appeler une fonction dans une méthode
    Par arnaudperfect dans le forum Langage
    Réponses: 3
    Dernier message: 26/08/2007, 23h04
  4. Appel d'une fonction dans une iframe sur un autre domaine
    Par morikann dans le forum Général JavaScript
    Réponses: 1
    Dernier message: 16/06/2007, 18h46
  5. Réponses: 8
    Dernier message: 10/01/2007, 21h10

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