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

Requêtes et SQL. Discussion :

Erreur lors de 'ajout de --tous-- dans une liste deroulante [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Points : 109
    Points
    109
    Par défaut Erreur lors de 'ajout de --tous-- dans une liste deroulante
    Bonjour,

    je souhaite créer une requête qui m'affiche --tous-- dans ma liste déroulante
    donc ça j'ai réussit à partir d'ici>>http://access.developpez.com/faq/?pa...l#AjoutTousLst

    Par contre lorsque j'affiche mon formulaire et que j'utilise cette fonction j'ai cette erreur de access :

    "Cette erreur se produit lorsqu'un événement ne peut pas être exécuté parce que Microsoft Office Access ne peut pas détecter l'emplacement de la logique correspondante. Par exemple, si la propriété OnOpen d'un formulaire est définie sur la valeur =[Field], cette erreur se produit car Access s'attend à ce qu'un nom de macro ou d'événement soit exécuté lors du déclenchement de l'événement."

    j'ai utilisé une fonction Me.XXXX.Requery sur cette liste déroulante, je pense que le problème vient de là et le fait qu'il ne sait pas quoi faire avec ce --tous--
    je pense que je devrais intégrer cette valeur --tous-- dans une function mais comment??

    merci de votre aide

  2. #2
    Membre chevronné
    Inscrit en
    Août 2006
    Messages
    1 588
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 1 588
    Points : 2 178
    Points
    2 178
    Par défaut
    Bonjour,
    Quelle est la source de la liste déroulante ?
    Si c'est une requête, l'executer pour en connaitre le résultat.
    Combien de champs sont affichés ?
    Pour ajouter une valeur permanente, faire une requete UNION

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Points : 109
    Points
    109
    Par défaut
    salut

    oui c'est une requête et j'ai bien réaliser une union pour avoir --tous-- sur le résultat de cette requête, cette partie marche.

    Mais lorsque j'essaye sur le formulaire cela ne marche pas. (cf message d'erreur sur mon message précédent)

    en fait j'ai deux listes déroulante dont la deuxième se met à jour en fonction de la première. Lorsque je sélectionne --tous-- la deuxième reste vide mais Access ne comprend pas ce que je veut car il ne lance pas la requête sur toutes les infos. Je pense qu'il me manque quelque chose dans le code mais je ne sais pas quoi!

  4. #4
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 368
    Points : 19 761
    Points
    19 761
    Billets dans le blog
    65
    Par défaut
    Salut,

    Essaie de mettre sur la propriété contenu de la 2ème zone de liste le code sql:

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT * FROM TaTable WHERE Champ1 like iif(Forms!TonFormulaire!Liste1="[Tous]","*",Forms!TonFormulaire!Liste1);


    TaTable désigne la table ou requête source de ta deuxième Liste.

    Champ1 désigne le champ de la table source contenant les valeurs à afficher dans la liste2.

    TonFormulaire désigne ton formulaire contenant tes listes.

    et Liste1 désigne la 1ère liste contenant "[Tous]" entre autre...

    A+

  5. #5
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Points : 109
    Points
    109
    Par défaut
    merci de ton aide user,

    j'ai essayé ta requête mais cela ne marche pas peut être que je m'y prends mal!!

    ma 2ème liste est aussi basé sur une requête écrite sur contenu

    j'ai 3 table en relation

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SELECT table2.cd_hab, table2.lb_hab
    FROM table2 INNER JOIN (table3 INNER JOIN table1 ON table3.CD_NOM = table1.CD_NOM) ON table2.CD_HAB = table3.CD_HAB
    WHERE (((table1.LB_NOM)=[Forms]![Formulaire_Generale]![liste1_box])) LIKE iif(Forms!Formulaire_Generale!liste1_box="[Tous]","*",Forms!Formulaire_Generale!liste1_box);
    j'ai donc collé la fin de code(à partir de iif) et il me donne une erreur "sur opérateur" correspondant à la partie souligné en rouge??

    je vais essayer d'être clair :

    Sur cette deuxième liste j'ai aussi créée un bouton qui me permet de rechercher toutes les infos correspondant à la sélection de ma 1ère liste

    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
     
    Private Sub liste2_Change()
    Dim esp As String           'declarer la liste deroulante relative a l'espèce
    Dim hab As String          'declarer  la liste deroulante relative a l'habitat
    Dim sSql As String       'declarer la requete
     
    esp = Me.liste1_box.Value
    hab = Me.liste2_box.Column(1)
     
    Me.Form.RecordSource = ""
    DoCmd.SetWarnings False
     
    sSql = "SELECT ...
    " FROM ...
    " WHERE ...
     
     
    DoCmd.RunSQL sSql
     
    DoCmd.SetWarnings True
     
    Debug.Print sSql
    Me.Form.RecordSource = "tbl_globale"
    'Me.Form.RecordSource = sSql
    Me.Form.Requery
    serait il plus simple de réaliser un iif à l'intérieur de ce code???, j'ai essayé mais sans résultat non plus!!

    il y a une chose que je ne comprend pas dans ton sql, c'est à quoi doit correpondre "*"?

  6. #6
    Rédacteur/Modérateur

    Avatar de User
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Août 2004
    Messages
    8 368
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Ain (Rhône Alpes)

    Informations professionnelles :
    Activité : Développeur informatique

    Informations forums :
    Inscription : Août 2004
    Messages : 8 368
    Points : 19 761
    Points
    19 761
    Billets dans le blog
    65
    Par défaut
    Salut,

    Dans le contenu de la 2ème liste essaie de mettre :

    Code sql : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT table2.cd_hab, table2.lb_hab
    FROM table2 INNER JOIN (table3 INNER JOIN table1 ON table3.CD_NOM = table1.CD_NOM) ON table2.CD_HAB = table3.CD_HAB
    WHERE (((table1.LB_NOM) like iif(Forms!Formulaire_Generale!liste1_box="[Tous]","*",Forms!Formulaire_Generale!liste1_box)));

    et sur clic de la première liste tu mets le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Private Sub liste1_box_Click()
    Me.liste2_box.Requery
     
    End Sub
    A+

  7. #7
    Membre régulier
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    321
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 321
    Points : 109
    Points
    109
    Par défaut
    ok merci de ton aide

    J'ai réussi à faire marcher mon code en introduisant une condition if then else sur ma requête et tout se passe bien

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

Discussions similaires

  1. [AC-2010] erreur lors d'un copier-coller dans une liste déroulante d'un formulaire
    Par freeman3869 dans le forum Access
    Réponses: 11
    Dernier message: 19/05/2015, 14h59
  2. [AC-2010] Ajouter selection [Tous] dans une liste déroulante
    Par mcharmat dans le forum IHM
    Réponses: 2
    Dernier message: 23/11/2013, 19h11
  3. [AC-2003] Option "Tous" dans une Liste deroulante
    Par buzz73 dans le forum IHM
    Réponses: 2
    Dernier message: 21/07/2009, 11h57
  4. [PHP-JS] ajout d'options dans une liste deroulante
    Par moonia dans le forum Langage
    Réponses: 10
    Dernier message: 04/05/2006, 11h18

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