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 :

Recherche multicritère sur champs à plusieurs valeurs ?! [AC-2007]


Sujet :

Requêtes et SQL.

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut Recherche multicritère sur champs à plusieurs valeurs ?!
    Bonjour,
    J'ai réalisé un formulaire de recherche multicritères grâce au très fameux tutoriel
    :http://cafeine.developpez.com/access...echerchemulti/.

    Cependant j'ai un problème, en effet, J'ai un champs qui peut contenir plusieurs valeurs séparés par des points virgules et je souhaites réaliser une "recherche" dans ce champs. Lors de mes essais, il me renvoi cette erreur :

    "Erreur d'exécution '3831'
    Le champ a plusieurs valeurs
    "T_Fabricant!SousCatégorieN°1" ne peut pas être utilisé dans une clause WHERE ou HAVING."


    Voici mon code :
    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
    44
    45
    46
    47
    48
    Private Sub RefreshQuery()
     Dim SQL As String
     Dim SQLWhere As String
     
     SQL = "SELECT N°Fabricant, NomFab, CatégorieN°1, CatégorieN°2, CatégorieN°3, CatégorieN°4, NomFab, Commentaire, Ville, CodePostal, SousCatégorieN°1, SousCatégorieN°2, SousCatégorieN°3, SousCatégorieN°4 FROM T_Fabricant Where T_Fabricant!N°Fabricant <> 0 "
     
     
    If Me.case_NomFabricant Then
        SQL = SQL & "And T_Fabricant!NomFab = '" & Me.chk_NomFabricant & "' "
    End If
     
    If Me.case_Famille Then
        SQL = SQL & "And T_Fabricant!CatégorieN°1 = " & Me.chk_Famille & " "
        SQL = SQL & "Or T_Fabricant!CatégorieN°2 = " & Me.chk_Famille & " "
        SQL = SQL & "Or T_Fabricant!CatégorieN°3 = " & Me.chk_Famille & " "
        SQL = SQL & "Or T_Fabricant!CatégorieN°4 = " & Me.chk_Famille & " "
    End If
     
    If Me.case_Catégorie Then
        SQL = SQL & "And T_Fabricant!SousCatégorieN°1 = '" & Me.chk_Catégorie & "' "
    End If
     
    If Me.case_Ville Then
        SQL = SQL & "And T_Fabricant!Ville = '" & Me.chk_Ville & "' "
    End If
     
    If Me.case_Contact Then
        SQL = SQL & "And T_Fabricant!Contact = " & Me.chk_Contact & " "
    End If
     
    If Me.case_Commentaire Then
        SQL = SQL & "And T_Fabricant!Commentaire like '*" & Me.txt_Commentaire & "*' "
    End If
     
    If Me.case_CodePostal Then
        SQL = SQL & "And T_Fabricant!CodePostal like = " & Me.txt_CodePostal & " "
    End If
     
        SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
        SQL = SQL & ";"
     
    Debug.Print SQL
     
     Me.lblStats.Caption = DCount("*", "T_Fabricant", SQLWhere) & " / " & DCount("*", "T_Fabricant")
     Me.Lstresultat.RowSource = SQL
     Me.Lstresultat.Requery
     
    End Sub
    L'erreur se situe ici :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Me.case_Catégorie Then
        SQL = SQL & "And T_Fabricant!SousCatégorieN°1 = '" & Me.chk_Catégorie & "' "
    End If
    Tous les autres champs fonctionnent, mais celui-ci vu qu'il peut contenir plusieurs valeurs, la recherche ne peut s'effectuer...Comment puis-je faire ?

    Merci d'avance pour vos réponses.

    ps : je bosse sur Access 2007

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Vu que tes champs comportent des caractères spéciaux (°), entoure tes champs de [].

    Philippe

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Citation Envoyé par Philippe JOCHMANS Voir le message
    Bonjour

    Vu que tes champs comportent des caractères spéciaux (°), entoure tes champs de [].

    Philippe
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "And T_Fabricant![CatégorieN°1] = " & Me.chk_Famille & " "
    Comme cela ?... Merci pour l'info mais ça m'aide pas pour le soucis citer ci-dessus...

  4. #4
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 5
    Points : 7
    Points
    7
    Par défaut
    Si ça peut aider des gens, j'ai trouvé la solution

    Code sql : 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
    44
    45
    Private Sub RefreshQuery()
     Dim SQL As String
     Dim SQLWhere As String
     
    SQL = "SELECT Min(N°Fabricant), NomFab, Min(CatégorieN°1), Min(CatégorieN°2), Min(CatégorieN°3), Min(CatégorieN°4), Min(Commentaire) AS Commentaire, Min(Ville) AS Ville, Min(CodePostal) AS CodePostal, Min(SousCatégorieN°1.Value), Min(SousCatégorieN°2.Value), Min(SousCatégorieN°3.Value), Min(SousCatégorieN°4.Value) FROM T_Fabricant Where T_Fabricant!N°Fabricant <> 0"
     
    If Me.case_NomFabricant Then
        SQL = SQL & "And T_Fabricant!NomFab = '" & Me.chk_NomFabricant & "'"
    End If
     
    If Me.case_Famille Then
        SQL = SQL & "And (T_Fabricant![CatégorieN°1] = " & Me.chk_Famille & " Or T_Fabricant![CatégorieN°2] = " & Me.chk_Famille & " Or T_Fabricant![CatégorieN°3] = " & Me.chk_Famille & " Or T_Fabricant![CatégorieN°4] = " & Me.chk_Famille & ") "
    End If
     
    If Me.case_Ville Then
        SQL = SQL & "And T_Fabricant!Ville = '" & Me.chk_Ville & "' "
    End If
     
    If Me.case_Contact Then
        SQL = SQL & "And T_Fabricant!Contact = " & Me.chk_Contact & " "
    End If
     
    If Me.case_Commentaire Then
        SQL = SQL & "And T_Fabricant!Commentaire like '*" & Me.txt_Commentaire & "*' "
    End If
     
    If Me.case_CodePostal Then
        SQL = SQL & "And T_Fabricant!CodePostal = " & Me.chk_CodePostal & " "
    End If
     
    If Me.case_Catégorie Then
        SQL = SQL & "And T_Fabricant!SousCatégorieN°1.Value = " & Me.chk_Catégorie & " "
    End If
     
        SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
        SQL = SQL & " GROUP BY NomFab;"
     
    Debug.Print SQL
     
     Me.lblStats.Caption = DCount("*", "T_Fabricant", SQLWhere) & " / " & DCount("*", "T_Fabricant")
     Me.Lstresultat.RowSource = SQL
     Me.Lstresultat.Requery
     
    End Sub

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 16/12/2013, 16h16
  2. [AC-2007] Amélioration requête : recherche multicritères et champs à plusieurs valeurs
    Par pierrequimousse dans le forum Requêtes et SQL.
    Réponses: 3
    Dernier message: 28/09/2010, 15h36
  3. [MySQL] recherche multicritères sur plusieurs table
    Par rvm31 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 24/11/2007, 17h42
  4. recherche multicritères sur plusieurs tables
    Par amélie22 dans le forum Access
    Réponses: 1
    Dernier message: 16/06/2006, 09h48
  5. Recherche multicritère sur plusieurs tables
    Par Nabouille dans le forum Access
    Réponses: 3
    Dernier message: 12/04/2006, 18h39

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