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 :

[SQL] Sélection selon un paramètre contenant plusieurs valeurs


Sujet :

Requêtes et SQL.

  1. #1
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut [SQL] Sélection selon un paramètre contenant plusieurs valeurs
    Bonjour,
    j'ai une table qui contient une liste de pays qui appartiennent chacun à un département :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    nom_pays	nom_dep
    Pays1		Calvados
    Pays2		Calvados
    Pays3		Manche
    Pays4		Orne
    ...
    je souhaites sélectionner tout les pays dont le nom de département est stocké dans une variable, mais la variable peut contenir plusieurs départements, dans l'exemple Calvados et Orne pour obtenir une sélection des Pays1, Pays2 et Pays 4.

    Voici une de mes tentatives (désopilantes )
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT [n_pays_r25].[nom_pays]
    FROM N_PAYS_R25
    WHERE [n_pays_r25].[nom_dep] in (";Calvados;Orne");
    merci

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    In ("1111","2222")
    Elle est pas belle la vie ?

  3. #3
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    merci mais
    ma variable est sous la forme :
    (";département;département")
    mais peut être aussi (";département")
    ou (";département;département;département") ...

    ma variable contient qu'une chaîne de caractère

  4. #4
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bjr,

    A part passer par une fonction VBA, je ne connais pas de solution.

    Voir ma réponse au même problème sur ce lien :
    http://www.developpez.net/forums/sho...35&postcount=4

  5. #5
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    salut Arkham46,
    je remplis ma variable grâce à ce code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim l As Integer
    Me.zone_geo_Dep = ""
    For l = 0 To Me.F_R_Liste_Département.ListCount
    If Me.F_R_Liste_Département.Selected(l) = True Then
    If Me.zone_geo_Dep = "" Then
    Me.zone_geo_Dep = Me.F_R_Liste_Département.Column(0, l)
    Else: Me.zone_geo_Dep = Me.zone_geo_Dep & ";" & Me.F_R_Liste_Département.Column(0, l)
    End If
    End If
    Next l
    puis j'essaye d'appliquer ton exemple mais je n'arrive pas à tout comprendre dans la fonction
    merci de ton aide

  6. #6
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    La fonction ExistsInList que je propose renvoit Vrai si la valeur pValue existe dans la liste pList.
    Donc il suffit de la mettre en critère.

    A la place de la fonction GetItemSelected que je mentionne, tu peux mettre la valeur de ton contrôle zone_geo_Dep puisqu'il contient la liste de valeurs sélectionnées.

  7. #7
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    j'ai mis ta fonction en haut (copier/coller )
    puis
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    Me.F_R_Liste_Pays.RowSourceType = "Table/Requête"
    strSQL = "SELECT N_PAYS_R25.NOM_PAYS FROM N_PAYS_R25 WHERE ExistsInList([N_PAYS_R25.NOM_PAYS], Me.zone_geo_Dep , ";") ;"
    Me.F_R_Liste_Pays.RowSource = strSQL
    Me.F_R_Liste_Pays.Requery
    me retourne erreur de compilation : attendu fin d'instruction sur le ;
    on dirait que c'est les guillemets

    merci pour ta patience et pour ton aide

  8. #8
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Essayes
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "SELECT N_PAYS_R25.NOM_PAYS FROM N_PAYS_R25 WHERE ExistsInList([N_PAYS_R25.NOM_PAYS], '" & Me.zone_geo_Dep & "' , ";") ;"
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  9. #9
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    j'ai toujours le même message d'erreur

  10. #10
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    strSQL = "SELECT N_PAYS_R25.NOM_PAYS FROM N_PAYS_R25 WHERE ExistsInList([N_PAYS_R25.NOM_PAYS], '" & Me.zone_geo_Dep & "' , ';') ;"
    EDIT: PS je n'ai regardé le code de la fonction ExistsInList... je suppose donc que tu l'as correctement utilisée.
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  11. #11
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    plus de message d'erreur mais ma liste reste vide
    j'ai effectivement utilisé la fonction ExistsInList
    mais je suis pas sur de moi

    je la remet ici pour mémoire et pour une aide éventuelle
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function ExistsInList(pValue As String, pList As String, pDelimiter As String) As Boolean
    Dim lList() As String
    Dim lCpt As Integer
    lList = Split(pList, pDelimiter)
    For lCpt = LBound(lList) To UBound(lList)
    If lList(clpt) = pValue Then
    ExistsInList = True
    Exit Function
    End If
    Next
    End Function
    merci

  12. #12
    Membre expert
    Avatar de mout1234
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    2 210
    Détails du profil
    Informations personnelles :
    Âge : 55
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Novembre 2006
    Messages : 2 210
    Points : 3 228
    Points
    3 228
    Par défaut
    Citation Envoyé par rainbow14
    plus de message d'erreur mais ma liste reste vide

    Je ne vois pas pourquoi. Fais une execution paps à pas et regardes ce que vaut Me.zone_geo_Dep et surtout strSQL...
    ............................................................................................

    Dans l'intérêt de tous, ne posez pas de questions techniques par messages privés.

  13. #13
    Membre à l'essai
    Inscrit en
    Avril 2007
    Messages
    37
    Détails du profil
    Informations forums :
    Inscription : Avril 2007
    Messages : 37
    Points : 21
    Points
    21
    Par défaut
    je suis repartis sur la piste de Random
    certainement plus facile
    j'ai mis en forme ma variable pour quelle colle avec son idée
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    Dim l As Integer
    Me.zone_geo_Dep = ""
    For l = 0 To Me.F_R_Liste_Département.ListCount
    If Me.F_R_Liste_Département.Selected(l) = True Then
    If Me.zone_geo_Dep = "" Then
    Me.zone_geo_Dep = Chr$(34) & Me.F_R_Liste_Département.Column(0, l) & Chr$(34)
    Else: Me.zone_geo_Dep = Me.zone_geo_Dep & "," & Chr$(34) & Me.F_R_Liste_Département.Column(0, l) & Chr$(34)
    End If
    End If
    Next l
    ainsi je peux simplement faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Me.F_R_Liste_Pays.RowSourceType = "Table/Requête"
    strSQL = "SELECT [n_pays_r25].[nom_pays] FROM n_pays_r25 WHERE [n_pays_r25].[nom_dep] IN (" & Me.zone_geo_Dep & ");"
    et ça marche Youpi

    merci à tout le monde

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

Discussions similaires

  1. [DATA] Variables contenant plusieurs valeurs
    Par Invité dans le forum SAS Base
    Réponses: 7
    Dernier message: 21/02/2014, 16h39
  2. Requete sur un champ contenant plusieurs valeurs
    Par ecarbill dans le forum Requêtes
    Réponses: 4
    Dernier message: 20/01/2011, 14h06
  3. Réponses: 4
    Dernier message: 21/07/2009, 14h08
  4. Réponses: 4
    Dernier message: 07/07/2008, 15h29
  5. Champs contenant plusieurs valeurs séparées par ;
    Par sabine34 dans le forum Requêtes
    Réponses: 3
    Dernier message: 11/05/2007, 12h20

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