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 :

liste déroulante de requêtes


Sujet :

IHM

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Par défaut liste déroulante de requêtes
    Bonjour à tous,

    J'ai créé un formulaire qui importe des données dans plusieurs tables tampons.

    Dans ce même formulaire j'aimerai créer une liste déroulante qui pointe vers plusieurs requête de mise à jour des mes tables (les requêtes sont déjà créées).

    Et donc je n'arrive pas à afficher la liste des mes requêtes de MAJ dans ma liste et ensuite j'aimerai pouvoir les exécuter.

    Est-ce possible ???

    Merci pour votre aide.

  2. #2
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Bonjour,

    La liste des requêtes est dans CurrentDb.QueryDefs
    Il faudrait à l'ouverture de ton formulaire la copier dans une table temporaire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Dim qry As DAO.QueryDef
    docmd.runsql "delete from rq_tmp"
    For Each qry In CurrentDb.QueryDefs
      'si la requête n'est pas sytème (commence par ~)
      If Left(qry.Name, 1) <> "~" Then docmd.runsql "insert into rq_tmp nom values '" & qry.name & "'"
    Next qry
    Puis prendre rq_tmp comme source de ta liste déroulante ChoixRequete

    Lorsque l'utilisateur fait son choix la requête s'exécute par l'instruction :
    CurrentDb.QueryDefs(ChoixRequete).Execute

  3. #3
    Membre averti
    Inscrit en
    Septembre 2009
    Messages
    44
    Détails du profil
    Informations forums :
    Inscription : Septembre 2009
    Messages : 44
    Par défaut
    Bonjour Nico84 mercu pour ta réponse.

    J'ai testé cela mais j'ai surement une erreur :

    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
    Private Sub Form_Open(Cancel As Integer)
     
    Dim strSQL As String
    Dim qry As DAO.QueryDef
    Dim sql As String
     
    strSQL = "delete from rq_tmp"
    DoCmd.RunSQL strSQL
     
    For Each qry In CurrentDb.QueryDefs
      'si la requête n'est pas sytème (commence par ~)
      If Left(qry.Name, 1) <> "~" Then
      sql = "insert into [rq_tmp](nomvalues)" & qry.Name & "'"
      DoCmd.RunSQL sql
      End If
    Next qry
     
    End Sub
    J'ai donc créé une table rq_tmp avec comme champ "nomvalues"

    le déboggeur ne m'indique pas d'erreur dans mon code mais ma liste ne m'affiche rien et ma table est vide...

    en ce qui concerne l'execution des requêtes, je n'ai pas très bien compris cela :

    CurrentDb.QueryDefs(ChoixRequete).Execute

    Merci pour ton aide.

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 682
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 41
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 682
    Par défaut
    salut,
    dans ta requête d'insertion, il faut apporter une petite correction :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    sql = "insert into [rq_tmp](nomvalues) values ('" & qry.Name & "')"
    Cycle de vie d'un bon programme :
    1/ ça fonctionne 2/ ça s'optimise 3/ ça se refactorise

    Pas de question technique par MP, je ne réponds pas

    Mes ouvrages :
    Migrer les applications VBA Access et VBA Excel vers la Power Platform
    Apprendre à programmer avec Access 2016, Access 2019 et 2021

    Apprendre à programmer avec VBA Excel
    Prise en main de Dynamics 365 Business Central

    Coffrets disponibles de mes ouvrages : https://www.editions-eni.fr/jean-philippe-andre
    Pensez à consulter la FAQ Excel et la FAQ Access

    Derniers tutos
    Excel et les paramètres régionaux
    Les fichiers Excel binaires : xlsb,

    Autres tutos

  5. #5
    Expert confirmé Avatar de nico84
    Homme Profil pro
    Consultant/développeur ERP
    Inscrit en
    Mai 2008
    Messages
    3 127
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Consultant/développeur ERP
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2008
    Messages : 3 127
    Par défaut
    Citation Envoyé par pancratee Voir le message
    "insert into [rq_tmp](nomvalues)" & qry.Name & "'"
    Dans ma requête, [nom] était le nom du champ et VALUE le mot clé SQL qui suit INSERT INTO !

    Citation Envoyé par pancratee Voir le message
    en ce qui concerne l'execution des requêtes, je n'ai pas très bien compris cela :
    CurrentDb.QueryDefs(ChoixRequete).Execute
    Cette instruction est à placer dans ChoixRequete_afterupdate pour exécuter la requête

  6. #6
    Expert éminent

    Avatar de Tofalu
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Octobre 2004
    Messages
    9 501
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Octobre 2004
    Messages : 9 501
    Par défaut
    Une autre piste sans passer par une table temporaire :

    Dans un nouveau module :

    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
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    Option Explicit
    Private tabRqt() As String
    Function listrqt(fld As Control, id As Variant, _
        row As Variant, col As Variant, code As Variant) _
         As Variant
        Dim intOffset As Integer
        Dim oDb As DAO.Database
        Set oDb = CurrentDb
        Select Case code
            Case acLBInitialize
                utilListeRequeteMAJ
                listrqt = True
            Case acLBOpen
                listrqt = Timer
            Case acLBGetRowCount
                listrqt = UBound(tabRqt) + 1
                MsgBox "i"
            Case acLBGetColumnCount
                listrqt = 1
            Case acLBGetColumnWidth
                listrqt = -1
            Case acLBGetValue
              listrqt = tabRqt(row)
        End Select
    End Function
     
    Sub utilListeRequeteMAJ()
    Dim oDb As DAO.Database
    Dim oQdf As DAO.QueryDef
    Dim t() As String
    Dim i As Integer
    Set oDb = CurrentDb
    For Each oQdf In oDb.QueryDefs
      If InStr(1, oQdf.SQL, "UPDATE") Then
     
        ReDim Preserve t(i)
        t(i) = oQdf.Name
        i = i + 1
     
      End If
    Next oQdf
    tabRqt = t
    End Sub
    Puis dans la zone de liste, définir la prioriété Origine source (RowSourceType) à :

    listRqt

Discussions similaires

  1. liste déroulante pour requête
    Par swissmade dans le forum Requêtes et SQL.
    Réponses: 4
    Dernier message: 16/08/2007, 09h52
  2. [VBA] liste déroulante avec requête
    Par dalmasma dans le forum VBA Access
    Réponses: 17
    Dernier message: 16/07/2007, 14h52
  3. Liste déroulante sur requête
    Par guiguikawa dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 21/06/2006, 12h31
  4. [MySQL] Liste déroulante et requète
    Par Mr Capone dans le forum PHP & Base de données
    Réponses: 12
    Dernier message: 28/03/2006, 14h02

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