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 :

Déclencher une requête à partir d'une liste déroulante d'un formulaire [AC-2013]


Sujet :

IHM

  1. #1
    Nouveau membre du Club Avatar de altor92
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2017
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Déclencher une requête à partir d'une liste déroulante d'un formulaire
    Bonjour
    suite à la création de mon formulaire sur lequel j'avais dans un premier temps positionner des boutons pour déclencher des macro dont l'objet était d’exécuter des requête et de présenter les états correspondants (Ouf....), je souhaiterais privilégier une sélection par liste déroulante (plus esthétique).
    J'ai réussi à créer cette liste à partir d'une table (je suis débutant) mais à présent je cherche à déclencher via l'index sélectionné.
    je crois comprendre que je dois passer par du code VBA en utilisant les propriétés du bouton liste, mais ça ne marche pas.
    j'ai fait un PJ recap pour montrer mon souci.
    si parfois une âme charitable pouvait me montrer le chemin....?????

    Merci d'avance!!!

  2. #2
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 244
    Points : 5 616
    Points
    5 616
    Par défaut
    Bonjour,

    Il faudrait lancer le code non pas l'événement "sur clic", mais sur l'événement "après mise à jour" (= après que l'on ait choisi un élément de la liste).

    Le code associé devrait plutôt ressembler à ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub Mes_Requêtes_AfterUpdate()
       Debug.Print "Me.Mes_Requêtes = "; Me.Mes_Requêtes
       If Me.Mes_Requêtes = 2 Then
          DoCmd.OpenQuery "R_RDG02"
          DoCmd.OpenForm "E_RDG02"
       Else
          MsgBox "Raté"
       End If
    End Sub
    Le Debug.Print permet de voir dans la fenêtre d'exécution (ctrl-g) la valeur qui a été renvoyée par le déroulant "Mes_requêtes"

    Il faut prendre l'habitude de ne jamais utilisé de lettres accentuées pour nommer les champs ou tout autre objet dans Access.
    Eviter également de laisser des espaces dans ces noms, à remplacer par _

    Bonne continuation.

  3. #3
    Nouveau membre du Club Avatar de altor92
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2017
    Messages : 43
    Points : 27
    Points
    27
    Par défaut Événement click sur liste déroulante
    Merci Eric, ça avance en effet.
    j'ai pu déclencher l'action avec ton code il effectue la requête (parfait) bon il bloque sur l'ouverture de l'état....je regarde et te tiens au courant

  4. #4
    Nouveau membre du Club Avatar de altor92
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2017
    Messages : 43
    Points : 27
    Points
    27
    Par défaut déclencher événement à partir d'une liste déroulante
    ça y est ça marche...
    pour info le code c'était
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Private Sub Mes_requêtes_Click()
    Debug.Print "Me.Mes_Requêtes = "; Me.Mes_requêtes
       If Me.Mes_requêtes = 2 Then
          DoCmd.OpenQuery "R_RDG02"
          DoCmd.Close
          DoCmd.OpenReport "E_RDG02", acViewReport
       ElseIf Me.Mes_requêtes = 3 Then
          DoCmd.OpenQuery "R_RDG03"
          DoCmd.Close
          DoCmd.OpenReport "E_RDG03", acViewReport
       ElseIf Me.Mes_requêtes = 4 Then
          DoCmd.OpenQuery "R_RDG04"
          DoCmd.Close
    Merci en tous les cas pour ton aide précieuse

  5. #5
    Expert confirmé
    Homme Profil pro
    retraité
    Inscrit en
    Juin 2012
    Messages
    3 244
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : retraité
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2012
    Messages : 3 244
    Points : 5 616
    Points
    5 616
    Par défaut
    Très bien.
    Juste que je me demande pourquoi ouvrir une requête pour la refermer immédiatement.
    Je crois bien que cela marcherait aussi bien ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    If Me.Mes_requêtes = 2 Then 
    DoCmd.OpenReport "E_RDG02", acViewReport
    ElseIf Me.Mes_requêtes = 3 Then
    DoCmd.OpenReport "E_RDG03", acViewReport
    ElseIf Me.Mes_requêtes = 4 Then
    ...

    ou même

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DoCmd.OpenReport "E_RDG" & format(Me.Mes_requêtes,"00"), acViewReport
    Bonne continuation.

  6. #6
    Nouveau membre du Club Avatar de altor92
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2017
    Messages : 43
    Points : 27
    Points
    27
    Par défaut En fait....
    En fait, je souhaite l'exécuter cette requête avant d'éditer l'état correspondant (l'état se nourrissant du résultat de cette requête)
    peut-être que ce n'est pas la bonne instruction?

  7. #7
    Expert éminent sénior
    Avatar de tee_grandbois
    Homme Profil pro
    retraité
    Inscrit en
    Novembre 2004
    Messages
    8 840
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : France, Yvelines (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Novembre 2004
    Messages : 8 840
    Points : 14 944
    Points
    14 944
    Par défaut
    Bonjour,
    je suppose qu'il s'agit de requêtes Action (Ajout, suppression ou Mise à jour) car sinon cela n'a aucun intérêt. Si cela remplit la source de ton état, tu peux effectivement lancer ta requête juste avant d'ouvrir ton état, mais inutile de faire un Docmd.Close après l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.Mes_requêtes = 2 Then
        DoCmd.OpenQuery "R_RDG02",acViewNormal, acEdit
        DoCmd.OpenReport "E_RDG02", acViewReport
    ElseIf Me.Mes_requêtes ...
    Tu peux utiliser Docmd.SetWarnings False pour enlever le message de la requête Action (à mettre au début de procédure et un Docmd.SetWarnings True à la fin) ...

  8. #8
    Nouveau membre du Club Avatar de altor92
    Homme Profil pro
    Conseil - Consultant en systèmes d'information
    Inscrit en
    Janvier 2017
    Messages
    43
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : Conseil - Consultant en systèmes d'information
    Secteur : Conseil

    Informations forums :
    Inscription : Janvier 2017
    Messages : 43
    Points : 27
    Points
    27
    Par défaut TOUT A FAIT et MERCI A TOI
    Citation Envoyé par tee_grandbois Voir le message
    Bonjour,
    je suppose qu'il s'agit de requêtes Action (Ajout, suppression ou Mise à jour) car sinon cela n'a aucun intérêt. Si cela remplit la source de ton état, tu peux effectivement lancer ta requête juste avant d'ouvrir ton état, mais inutile de faire un Docmd.Close après l'exécution :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    If Me.Mes_requêtes = 2 Then
        DoCmd.OpenQuery "R_RDG02",acViewNormal, acEdit
        DoCmd.OpenReport "E_RDG02", acViewReport
    ElseIf Me.Mes_requêtes ...
    Tu peux utiliser Docmd.SetWarnings False pour enlever le message de la requête Action (à mettre au début de procédure et un Docmd.SetWarnings True à la fin) ...

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 07/04/2011, 14h38
  2. Réponses: 4
    Dernier message: 16/02/2009, 20h52
  3. [SQL] Construction d'une requête à partir d'une requête
    Par Pgs dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 15/09/2007, 15h24
  4. Création d'une table à partir d'une requête
    Par pedroleouf dans le forum Administration
    Réponses: 16
    Dernier message: 25/10/2006, 18h18
  5. Exécuter une requête à partir d'une variable
    Par Poussy-Puce dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 16/03/2006, 14h15

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