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

IHM Discussion :

Passer une variable vers un formulaire d'une autre base de donnée [AC-2003]


Sujet :

IHM

  1. #1
    Membre confirmé Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Par défaut Passer une variable vers un formulaire d'une autre base de donnée
    à tous !!

    Petite question...

    Est-il possible de 'transférer' le contenu d'une zone de texte txtRef d'un formulaire provenant de bdd1.mdb vers une autre zone de texte txtRef mais dans un formulaire provenant de bdd2.mdb ?

    Il y a une méthode qui permet de réaliser ça sur différent formulaire mais au sein de la même base de donnée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Form_frmFormulaire.txtRef.Value = Me.txtRef.Value
    Existe-t-il une méthode quand cela ne concerne pas la même base de donnée ?

    Et par la même occasion est-il possible de lancer une procédure VB de bdd2.mdb depuis un formulaire de bdd1.mdb ?

    Merci d'avance !

  2. #2
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    Avec la méthode OpenDatabase, tu peux ouvrir une base de données B depuis un base de données A.

    Si tu veux pouvoir passer une valeur dans un formulaire d'une autre base, il faut passer par OLE Automation pour bénéficier de l'objet DoCmd et sa méthode OpenForm. Tu passes alors à l'argument OpenArgs la valeur souhaitée.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  3. #3
    Membre confirmé Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Par défaut
    Merci de ta réponse Argy,

    J'ai regarder ce que tu m'a suggérer et OpenDataBase permet en effet d'ouvrir la base de donnée désiré mais mon soucis c'est qu'en fait je cherchais plus à ouvrir un formulaire d'une base de donnée pour pouvoir copier dans une textbox, une variable d'une textbox d'un formulaire d'une autre base de données.

    J'essaye d'être précis :

    (ce qui est déjà fait)
    Dans un fichier mdb appélé 'A', il y a un formulaire 'fA' et dans ce formulaire il y a une textbox avec la référence d'un produit.
    (ce que j'aimerais faire)
    En cliquant sur un bouton, un fichier mdb 'B' s'ouvre, le formulaire 'fB' s'affiche et dans ce formulaire il y a une textbox qui reçois la référence du produit du formulaire 'fA'
    Et pour OpenForm je ne vois pas comment ecrire que je veux ouvrir depuis la BDD 'A' le formulaire 'fB' de la base de donnée 'B'.
    Au sein de la même base c'est facile parce qu'il y a juste à écrire le nom du formulaire, mais quand le formulaire vient d'une autre base, je vois pas comment faire.

    J'ai essayé

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    OpenDataBase "nom de la base" 'ça fonctionne
    Docmd.OpenForm "nom du formulaire à ouvrir" 'ça fonctionne pas, formulaire inexistants !
    Et à priori c'est normal parce que ça doit pas être comme ça qu'il faut procéder...

    J'éspère avoir été un brin plus précis.

    Merci d'avance pour les réponses.

  4. #4
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Dans ma réponse précédente, il y a 2 suggestions.
    C'est la seconde qu'il faut élaborer.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  5. #5
    Membre confirmé Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Par défaut
    Je n'ai pas l'impression que OpenForm permette d'ouvrir un formulaire d'une autre base de donnée.

    Les paramètres ne permettent pas de dire à quelle base de donnée est rattaché le formulaire à ouvrir.

    Les paramètre sont : FormName, FilterName, WhereCondition

    Je ne vois pas où je peux dire dans DoCmd.OpenForm, quelle base de donnée est concernée par l'ouverture du formulaire.

    C'es là où je bloque...

    FormName = Nom du formulaire mais pas nom de la base de donnée, du coup c'est dans la base de donnée active que le openform va fonctionner.

    Est-ce qu'il serait possible d'avoir un pti exemple pour mieux comprendre ?
    Merci
    Images attachées Images attachées  

  6. #6
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    J'ai bien compris ce que tu veux...

    Le souci est que c'est de l'Automation et que tu n'as pas bien capté là où je voulais te guider...

    Voici un exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub CopyDataToForm(ByVal FormName As String, ByVal TargetDBName As String, ByVal NewData As Variant)
    Dim oAppAcc                                                 As New Access.Application
        Set oAppAcc = New Access.Application
        With oAppAcc
            .Visible = True
            .OpenCurrentDatabase TargetDBName
            DoEvents
            .DoCmd.OpenForm FormName, acNormal, , , , acWindowNormal, NewData
        End With
    End Sub
    Là, avec le NewData, on peut intervenir avec me Me!OpenArgs, tester et en faire ce que l'on veut...

    Le problème, c'est qu'avec cette méthode, s'il y a des macros, tu n'auras pas la possibilité de procéder à l'ouverture de façon automatique...

    Ce que je ne comprends pas, c'est l'objectif de ta demande car ouvrir un formulaire, c'est bien mais qu'est ce qui te dis que tu sera positionner sur le bon enregistrement afin d'affecter la valeur voulue ;

    Tu me sembles parti dans un trajet sans issue simple.

    Explique ce que tu veux et tu souhaites car je pense qu'il y a une alternative plus simple.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  7. #7
    Membre confirmé Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Par défaut
    Je pense en effet que je n'est pas bien compris vers quoi tu voulais m'emmener .

    J'explique donc clairement le problème sans A ni B .

    En clair, cela fait maintenant 2 ans que j'améliore de jour en jour, grâce en grande partie à la l'aide de la communauté de developpez.net, une base de donnée qui me permet de gérer la Production, dont je suis le responsable, dans la société où je travail.

    Cette base de donnée est depuis le temps très fourni en formulaires, tables, requêtes, modules, en clair elle est à mon goût déjà trop surchargée.
    Elle me permet de créer,classer, visionner, mettre à jour des informations sur plus de 4500 "ordre de production" ainsi que plein d'autres fonctionnalité diverses et variées.

    Mais je n'avait pas la Gestion du stock.
    Du coup j'ai créé une autre base de donnée "Gestion de composants" qui permet de modifier le stock de composants.

    Mais les deux base ne sont pas reliée entre elles, et depuis ma base de donnée "Gestion Production" j'ai mis en place un système de nomenclature produit, comme avec Ciel! par exemple, avec tous les composants nécessaire à la fabrication de chaque produit proposé par notre société.

    Le principe des nomenclatures fonctionne très bien.
    Chaque fois que je créé un "ordre de production", la nomenclature apparait et j'ai à ma disposition une zone de liste ou apparaissent les besoins en composants en fonction de la quantité commandé par le client, pour le produit concerné.

    Le but ici est donc de relier les deux bases de donnée entres elles de façon à pouvoir déduire du stock la nomenclature du produit.

    Et c'est peut-être là l'erreur : d'avoir créé deux base de données différentes
    Les deux étant "tellement" rempli, que je me vois mal faire le transvasement de la gestion de composants vers le gestion de production.
    Il y a déjà tellement de chose sur les deux bases...

    De plus, la BDD "gestion de composants" est, depuis le temps que je travail dessus, très intuitive et fonctionne quasi à la perfection (de mon point de vus de modeste programmeur bien entendu ).
    Mais le hic, c'est qu'on ne peut déduire les composants que un à un, en entrant successivement dans trois textbox : la référence du composant, la quantité, et un signe + ou - si on veut ajouter ou déduire la référence de la base de donnée. Ensuite un fenêtre apparaît pour entrer un commentaire obligatoire : au minimum le numéro de l'ordre de production pour avoir un minimum de suivi.
    Une fois les quatre étapes effectuées, "un mouvement de stock" (un ligne dans une listbox) est créé pour pouvoir retrouvé l'historique de chaque mouvement.

    Voilà, tous ça pour exprimer mon désespoir à l'idée de penser de refaire à zéro la fonction de "Gestion de composants" dans ma base "Gestion Production".

    La question est donc :

    Comment déduire du stock, gérer par "gestion de composants", une nomenclature de PLUSIEURS références composants implantée dans ma base "Gestion Production" sans que cela ne tourne à l'usine à gaz ???.

  8. #8
    Rédacteur/Modérateur
    Avatar de argyronet
    Homme Profil pro
    Panseur de bobos en solutions ETL
    Inscrit en
    Mai 2004
    Messages
    5 133
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Panseur de bobos en solutions ETL
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2004
    Messages : 5 133
    Billets dans le blog
    5
    Par défaut
    Eh bien, tu n'as pas besoin d'ouvrir un formulaire pour cela, en tout cas pas en envisageant de modifier la valeur souhaitée...
    Tu dois modifier la valeur depuis la table de la base en question, donc avec effectivement un OpenDatabase et un Execute d'un script UPDATE ad'hoc.
    Une fois l'Update effectué, tu peux alors employer OLE Automation tel que je te l'ai montré, invoquer la méthode OpenForm de l'objet DoCmd avec une condition Where idoine et ce pour les deux cas, à savoir, l'UPDATE et le OpenForm... si toutefois tu as besoin d'ouvrir la base et son formulaire pour constater la nouvelle valeur.

    Donc, effectivement, avoir construit 2 bases distinctes n'est pas une bonne idée de départ car elle complexifie la M.A.J. des données.

    Argy
    Ce qui donne son sens à la communication, c´est la réponse que l´on obtient. Si vous n´obtenez pas la réponse voulue, communiquez différemment.

    Ils comptent sur vous...
    Web Site@Mail
    Tutoriels : Déployez vos applications Access 2010 à 2019 */* Réalisez un Assistant de présaisie...
    MDB Viewer : Visionneuse Access v4.0

  9. #9
    Membre confirmé Avatar de DeFCrew
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 167
    Par défaut
    Merci Argy de t'être intéressé à mon problème.

    En fait je pense que j'ai pris le problème du mauvais côté.
    Hier, dans ma tête il fallait absolument que j'utilise "Gestion de composants" en mode formulaire, mais c'est vrai que je ne suis pas obligé.

    J'ai juste à liée la table qui répertorie les composants et la table qui répertorie la liste des mouvements de stock à ma base gestion production.

    Bon je met résolu parce que de toute façon mon problème ne sera pas resolu tout de suite.

    Un grand merci à toi Argy et bonne continuation.

    Ciao;

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

Discussions similaires

  1. Récupération de la valeur d une variable elle même contenue dans une variable
    Par guiplongeur dans le forum Shell et commandes GNU
    Réponses: 3
    Dernier message: 16/03/2015, 16h23
  2. Mettre une variable dans l'appel d'une variable de session
    Par PrinceMaster77 dans le forum Langage
    Réponses: 2
    Dernier message: 13/04/2011, 10h12
  3. Réponses: 2
    Dernier message: 12/04/2011, 09h21
  4. Réponses: 1
    Dernier message: 17/01/2007, 21h52
  5. Réponses: 7
    Dernier message: 13/03/2006, 15h39

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