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 :

Problème SQL pour un formulaire de recherche multicritères


Sujet :

Requêtes et SQL.

  1. #1
    Candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Problème SQL pour un formulaire de recherche multicritères
    Bonjour,

    J'aurai besoin d'un coup de main pour finaliser un formulaire de recherche multicritères. Merci d'avance pour ceux qui prendront le temps de bien vouloir jeter un petit coup d’œil.....

    J'ai mis en place un formulaire de recherche Clients en fonction de différents critères selon le tuto de Caféine :

    Nom : 2016-11-24_160012.jpg
Affichages : 1282
Taille : 266,6 Ko

    La configuration de la recherche est parfaite : possibilité de sélectionner les résultats par rapport à plusieurs champs différents.
    Cependant il me manque 2 types de données (que j'ai essayé d'ajouter : tri par "CA" et par "effectif" et tri par "date de démarchage") qui sont des champs tous renseignés dans la même table client. Ainsi j'avais l'idée d'ajouter au formulaire type de recherche des filtres d'option : égal, < et >, afin de pouvoir sélectionner les entreprises ayant + de 50 salariés par exemple.

    Et c'est là qu'est le problème : je n'arrive pas à aménager sur la base de la méthode Caféine ma requête SQL pour traiter ces informations.

    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
    49
    50
    51
    52
    Private Sub RefreshQuery()
    Dim SQL As String
    Dim SQLWhere As String
     
    SQL = "SELECT liste_client_N°, liste_client_raison_sociale, liste_client_nom, liste_client_prénom, liste_client_ville, liste_client_code_libellé, liste_client_nb_employés FROM T_Liste_clients Where T_Liste_clients!liste_client_N° <> 0 "
     
    If Not Me.chk_Type Then
        SQL = SQL & "And T_Liste_clients!liste_client_Type = '" & Me.cbo_Type_Client & "' "
    End If
    If Not Me.chk_Statut Then
        SQL = SQL & "And T_Liste_clients!liste_client_Statut = '" & Me.cbo_Statut_Client & "' "
    End If
    If Not Me.chk_Interet Then
        SQL = SQL & "And T_Liste_clients!liste_client_Interet = '" & Me.cbo_Interet_Client & "' "
    End If
    If Not Me.chk_Code_Naf Then
        SQL = SQL & "And T_Liste_clients!liste_client_code_naf = '" & Me.cbo_Code_Naf & "' "
    End If
    If Not Me.chk_Activite Then
        SQL = SQL & "And T_Liste_clients!liste_client_code_libellé = '" & Me.cbo_Activite & "' "
    End If
    If Not Me.chk_Categorie Then
        SQL = SQL & "And T_Liste_clients!liste_client_code_catégorie = '" & Me.cbo_Categorie_Naf & "' "
    End If
    If Not Me.chk_Raison_Sociale Then
        SQL = SQL & "And T_Liste_clients!liste_client_raison_sociale like '*" & Me.txt_Raison_Sociale & "*' "
    End If
    If Not Me.chk_Enseigne Then
        SQL = SQL & "And T_Liste_clients!liste_client_enseigne like '*" & Me.txt_Enseigne & "*' "
    End If
    If Not Me.chk_Nom Then
        SQL = SQL & "And T_Liste_clients!liste_client_nom like '*" & Me.txt_Nom_Client & "*' "
    End If
    If Not Me.chk_Ville Then
        SQL = SQL & "And T_Liste_clients!liste_client_ville like '*" & Me.txt_Ville & "*' "
    End If
    If Not Me.chk_Secteur Then
        SQL = SQL & "And T_Liste_clients!liste_client_secteur = '" & Me.cbo_Secteur & "' "
    End If
    If Not Me.chk_Pays17 Then
        SQL = SQL & "And T_Liste_clients!liste_client_pays17 = '" & Me.cbo_Pays17 & "' "
    End If
     
    SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     
    SQL = SQL & ";"
     
    Me.lbl_Stats.Caption = DCount("*", "T_Liste_clients", SQLWhere) & " / " & DCount("*", "T_Liste_clients")
    Me.lst_Resultats.RowSource = SQL
    Me.lst_Resultats.Requery
     
    End Sub
    Merci de bien vouloir m'éclairer et m'aider à finaliser ce formulaire.

    Une dernière question pour la mise en forme des résultats dans la lst : comment intégrer à la requête un ordre de classement ? A chaque fois que j'ajoute IN ORDER [Champ] après le WHERE de la requête SQL, j'obtiens un message d'erreur.....

    Bastiencito

  2. #2
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Salut,

    Montres nous la partie SQL que tu rajoutes pour le tri par "CA" et par "effectif" et tri par "date de démarchage".
    Le problème vient surement d'une erreur de syntaxe.

    Et pour la deuxième question,
    Tu remplaces par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SQL = SQL & "ORDER BY [Champ];"

  3. #3
    Candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut Problème SQL pour un formulaire de recherche multicritères
    Bonjour Matiasko,

    Merci pour ta réponse. Et merci pour ton 1er éclaircissement, j'ai ainsi pu placer mon ordre de tri dans la liste.
    Ca fait plaisir de pouvoir avancer avec des indications avisées, car pour moi c'est une première dans le monde SQL ....

    Donc pour essayer d'imbriquer les options de filtre dans la requête SQL de base, j'avais émis cette hypothèse parmi plusieurs :

    If Not Me.chk_Effectif Then
    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés like '" & Me.txt_Effectif & "' "
    If Filtre_Selection.Value = 1 Then
    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés = txt_Effectif"

    ElseIf Filtre_Selection.Value = 2 Then
    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés > txt_Effectif"

    ElseIf Filtre_Selection.Value = 3 Then
    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés < txt_Effectif"
    End If
    End If

    Cependant ça ne marche pas du tout. Et pour essayer de valider la faisabilité de cette approche, en souhaitant sélectionner des entreprises dont l'effectif est supérieur à 30 salariés, j'avais également essayé :
    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés > '" & Me.txt_Effectif & "' "

    Mais le débogueur me dit : "Type de données incompatibles dans l'expression du critère" et me renvoie directement sur la ligne DCount :
    Me.lbl_Stats.Caption = DCount("*", "T_Liste_clients", SQLWhere) & " / " & DCount("*", "T_Liste_clients")

    Alors que la syntaxe avec "=" marche bien pour les combobox ????????

    J'espère que tu pourras m'éclairer pour remédier à cela et à imbriquer les options de filtre.

    Merci d'avance.

    Bastien

  4. #4
    Membre du Club
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2015
    Messages
    53
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Janvier 2015
    Messages : 53
    Points : 40
    Points
    40
    Par défaut
    Bonjour,

    La ligne après le premier If ne sert à rien car tu sais pas encore si tu veux égal, supérieur ou inférieur.
    Essayes avec ça:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    If Not Me.chk_Effectif Then
        If Filtre_Selection.Value = 1 Then
           SQL = SQL & "And T_Liste_clients!liste_client_nb_employés =  '" & Me.txt_Effectif & "' "
        Else
            If Filtre_Selection.Value = 2 Then
                SQL = SQL & "And T_Liste_clients!liste_client_nb_employés >  '" & Me.txt_Effectif & "' "
            Else
                If Filtre_Selection.Value = 3 Then
                    SQL = SQL & "And T_Liste_clients!liste_client_nb_employés <  '" & Me.txt_Effectif & "' "
                End If
            End if
        End if
    End If

    Il faudrait que tu fasse deux listes déroulantes (avec =, < et >) devant CA et Effectif pour pouvoir les traiter séparément.

    Bonne journée

  5. #5
    Candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Re-,

    Encore merci pour ta réponse. Seulement j'ai du mal à mettre en application ta dernière remarque, de mettre des listes déroulantes à la place des zones de texte pour les traiter.... Ou alors, peux-tu m'indiquer la marche à suivre pour remplir les listes déroulantes avec la valeur que l'on souhaite déterminer ? Il doit y avoir un masque de saisie à mettre en place ... ?

    Bastien

  6. #6
    Candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    J'ai oublié de te préciser, si c'est nécessaire, que "CA" et "Effectif" sont les étiquettes de la check box devant. Et la zone de saisie du critère c'est une zone de texte indépendante (txt_effectif)

    Merci pour ton aide

  7. #7
    Invité
    Invité(e)
    Par défaut
    Bonsoir,
    A mon avis T_Liste_clients!liste_client_nb_employés c'est un integer pas un string[']

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    T_Liste_clients!liste_client_nb_employés <  " & Me.txt_Effectif & "

  8. #8
    Candidat au Club
    Homme Profil pro
    Chef d'entreprise
    Inscrit en
    Octobre 2016
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Chef d'entreprise

    Informations forums :
    Inscription : Octobre 2016
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Bonjour,

    Je tiens à vous remercier pour vos réponses, problème résolu maintenant je peux aller de l'avant.....

    Merci beaucoup.

    Bastien.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 02/09/2015, 12h52
  2. [AC-2003] aider pour créer un formulaire de recherche multicritères
    Par youness_n dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/09/2011, 20h11
  3. [AC-2003] Probléme formulaire de recherche multicritére
    Par floacc dans le forum IHM
    Réponses: 18
    Dernier message: 25/08/2011, 14h49
  4. Formulaire de recherche multicritères
    Par dolf13 dans le forum Langage
    Réponses: 10
    Dernier message: 20/06/2006, 23h24
  5. Formulaire de recherche multicritères
    Par Michel DELAVAL dans le forum Access
    Réponses: 2
    Dernier message: 19/05/2006, 09h32

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