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

Access Discussion :

[Access 2002] Exécution d'une commande contenue dans une variable


Sujet :

Access

  1. #1
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Points : 79
    Points
    79
    Par défaut [Access 2002] Exécution d'une commande contenue dans une variable
    Bonjour à tous,

    J'ai trouvé dans la FAQ que cela était possible avec la fonction "Eval".

    L'exemple donné est le suivant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim mycmd as String
    mycmd = "DoCmd.OpenForm ('table1')"
    Eval (mycmd)
    Cela fonctionne en effet parfaitement bien, mais lorsque j'essaie de l'utiliser pour modifier les propriétés d'un contrôle cela ne marche pas.

    Mon code est le suivant

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Dim mycmd as String
    mycmd = "Forms!F_recherche.B_Modif.caption = ""Modification"""
    Eval (mycmd)
    Je ne rencontre pas de problème à la compilation, ni à l'exécution mais ma commande est complètement inopérante.

    Quelqu'un a t-il une idée ?

    NB : En fait la commande que je cherche à créer est plus complexe car je souhaite rendre paramétrable le nom du contrôle afin d'éviter d'écrire une centaine de fois la même commande.

    Merci

    Sergio

  2. #2
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    il serait peut etre plus simple et plus fonctionnel de partir de la form
    et de l'index du contrôle
    Elle est pas belle la vie ?

  3. #3
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Points : 79
    Points
    79
    Par défaut
    Bonjour Random,

    Je ne peux pas utiliser l'index du contrôle car je ne le maîtrise pas.

    J'ai un contrôle par département dans mon formulaire. A l'ouverture mon code boucle sur les enregistrements d'une table qui contient les départements qui concernent un client donné. Pour chaque département présent je modifie le contrôle qui le concerne. je récupère donc un code département qui est présent dans le nom du contrôle (par ex. code dép "63", nom du contrôle correspondant : "C63").

    Pour l'instant j'ai écrit une fonction avec une instruction "Select" et une centaine de "Case" qui fonctionne parfaitement mais je trouve ça un peu basique et j'aimerais l'améliorer.

    Merci de votre aide

    Cordialement

    Sergio

  4. #4
    Expert confirmé

    Profil pro
    Inscrit en
    Mai 2005
    Messages
    3 419
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2005
    Messages : 3 419
    Points : 4 297
    Points
    4 297
    Par défaut
    bien sur que tu peux
    mon recordset =select depart from matable where moncli=formsgnagna group by depart
    while not eof mon recordset
    controle="c" & depart
    Elle est pas belle la vie ?

  5. #5
    Membre régulier
    Inscrit en
    Août 2006
    Messages
    73
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 73
    Points : 79
    Points
    79
    Par défaut
    Oui ça je sais faire, là où je suis bloqué, c'est quand je fais "Eval(controle)" : la commande n'est pas exécutée !

    Cordialement

    Sergio

  6. #6
    Futur Membre du Club
    Profil pro
    Inscrit en
    Février 2005
    Messages
    7
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Février 2005
    Messages : 7
    Points : 5
    Points
    5
    Par défaut
    Bonjour à tous,

    Je pose mon problème ici car c'est exactement le même que Sergio63 et malheureusement personne n'a su lui venir en aide

    En résumé je voudrais pouvoir appeler un formulaire de recherche depuis plusieurs autres formulaires et renvoyer le résultat au bon endroit dans le formulaire appellant.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
       Parametres = Split(OpenArgs, "@@")
       Dim Send As String
       Send = "Forms!" & Parametres(0) & "!" & Parametres(1) & " = " & Me.LstPartners
       Eval (Send)
    Le nom de la form et du controle sont passés par OpenArgs et comme il y a pas mal de combinaisons possibles pour renvoyer le résultat je n'ai rien trouver d'autre qu'Eval pour éxécuter le code (même si je trouve ça moche).

    J'ai vérifier que "Send" contenait bien le code attendu et testé l'expression telle quel :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Forms!Attributions!CodePartner = 123456
    Ca fonctionne normalement mais avec Eval() pas d'erreur, il ne se passe rien (Juste je me sens un peu plus c## à chaque fois que je refais un test )

    Si quelqu'un a une idée, que ce soit avec Eval() ou une autre façon d'aborder le problème je lui serais vraiment reconnaissant de m'aider

    Merci d'avance

  7. #7
    Modérateur

    Homme Profil pro
    Inscrit en
    Octobre 2005
    Messages
    15 345
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations forums :
    Inscription : Octobre 2005
    Messages : 15 345
    Points : 23 805
    Points
    23 805
    Par défaut
    Pourquoi ne pas utiliser la collection Forms et la collection Controls ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    private sub EnumererFormEtControls()
       'affiche la liste et la valeur de tous les contrôles de tous les forms ouverts.
     
       on error goto Err_EnumererFormEtControls
     
       dim f as form
       dim c as control
     
       for each f in froms
     
         for each c in f.controls
           debug.print f.name, c.name,
           debug,print c.value,
           debug.print
         next c
     
       next f
     
    Exit_EnumererFormEtControls:
       exit sub
     
    Err_EnumererFormEtControls:
      select case err
         case ProprieteNonSupportee 'Là je en me souvient plus du code
            resume next
         case else
            msgbx err.number & " " err.description
            resume exit_EnumererFormEtControls
    end sub
    A+
    Vous voulez une réponse rapide et efficace à vos questions téchniques ?
    Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
    Et aussi regardez dans la FAQ Access et les Tutoriaux Access. C'est plein de bonnes choses.

Discussions similaires

  1. Exécuter une commande SQL dans une commande Dos
    Par meddly dans le forum Sql*Plus
    Réponses: 2
    Dernier message: 21/11/2013, 11h37
  2. [PowerShell] Comment exécuter une commande contenue dans une variable ?
    Par mzawo dans le forum Scripts/Batch
    Réponses: 1
    Dernier message: 09/05/2011, 17h58
  3. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  4. Changer un caractère dans une chaîne contenue dans une phrase
    Par cirtey dans le forum Algorithmes et structures de données
    Réponses: 9
    Dernier message: 07/03/2007, 16h16

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