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

VBA Access Discussion :

Utilisation du tuto recherche multi-critères : problème ! [AC-2003]


Sujet :

VBA Access

  1. #1
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut Utilisation du tuto recherche multi-critères : problème !
    Bonjour à tous,

    j'ai suivi pas à pas la procédure de recherche multi-critères qui est proposée par Cafeine.

    Malheureusement, je n'arrive pas à l'adapter à mon cas

    Ma liste de réponses reste désespérément vide.
    ma requête SQL marche bien lorsqu'elle est utilisée en solo :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    SELECT T_Fourniture.Num, T_Fourniture.R_Type, T_Fourniture.NomCommercial, T_Fourniture.CodeSAP, T_Fourniture.R_Fournisseur, T_Fourniture.R_Distributeur
    FROM T_Fourniture;
    Mon initialisation :
    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
    Private Sub Form_Load()
    Dim ctl As Control
     
    For Each ctl In Me.Controls
        Select Case Left(ctl.Name, 3)
            Case "chk"
                ctl.Value = -1
            Case "lbl"
                ctl.Caption = "- * - * -"
            Case "txt"
                ctl.Visible = False
                ctl.Value = ""
            Case "cmb"
                ctl.Visible = False
        End Select
    Next ctl
     
    Me.lstResultats.RowSource = "SELECT T_Fourniture.Num, T_Fourniture.R_Type, T_Fourniture.NomCommercial, T_Fourniture.CodeSAP, T_Fourniture.R_Fournisseur, T_Fourniture.R_Distributeur"
    Me.lstResultats.RowSource = Me.lstResultats.RowSource & "FROM T_Fourniture;"
    Me.lstResultats.Requery
    End Sub
    Et mon RefreshQuery :
    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
    Private Sub RefreshQuery()
     Dim SQL As String
     Dim SQLWhere As String
     
     SQL = "SELECT T_Fourniture.Num, T_Fourniture.R_Type, T_Fourniture.NomCommercial, T_Fourniture.CodeSAP, T_Fourniture.R_Fournisseur, T_Fourniture.R_Distributeur"
     SQL = SQL & "FROM T_Fourniture"
     SQL = SQL & "Where T_Fourniture!Num <> 0 "
     If Me.chkType Then
        SQL = SQL & "And T_Fourniture!R_Type like '" & Me.cmbType & "' "
     End If
     If Me.chkNomCommercial Then
        SQL = SQL & "And T_Fourniture!NomCommercial = '*" & Me.txtNomCommercial & "*' "
     End If
     If Me.chkCodeSAP Then
        SQL = SQL & "And T_Fourniture!CodeSAP like '*" & Me.txtCodeSAP & "*' "
     End If
     If Me.chkFournisseur Then
        SQL = SQL & "And T_Fourniture!R_Fournisseur like '" & Me.cmbFournisseur & "' "
     End If
     If Me.chkDistributeur Then
        SQL = SQL & "And T_Fourniture!R_Distributeur like '" & Me.cmbDistributeur & "' "
     End If
     
     SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))
     SQL = SQL & ";"
     
     'Me.lblStats.Caption = DCount("*", "T_Fourniture", SQLWhere) & " / " & DCount("*", "T_Fourniture")
     Me.lstResultats.RowSource = SQL
     Me.lstResultats.Requery
     
    End Sub
    J'ai commenté la partie lblStats parce que ça buggue sans que je sache vraiment pourquoi. C'est une partie statistiques qui ne m'intéresse pas énormément et j'aimerais déjà que le reste fonctionne

    Ce qui me paraît super bizarre dès le début c'est que dans le Form_Load, le ctl.Value = -1 est inefficient : mes chkBox sont cochées au chargement et les décocher fait apparaître les champs de recherche.

    Merci beaucoup pour votre aide, sincèrement !

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

    Déjà dans ta requête il manque des espaces regardes du coté de From et Where.

    [EDIT] En fait il n'y a pas mal d'endroits où tu as des problèmes d'espaces.

    De plus regardes au niveau du égal avec un * et des likes sans *.

    Philippe

  3. #3
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup pour tes pistes Philippe.

    Ca m'a permis de débloquer pas mal de choses : l'initialisation fonctionne (l'ensemble des fournitures s'affiche), les recherches avec les champs texte fonctionnement.

    Encore un (petit) souci que je n'arrive pas à résoudre :- je n'arrive pas à trouver la syntaxe pour que ce type de filtre marche avec un cmbType qui soit un nombre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    If Me.chkType Then
        SQL = SQL & "And T_Fourniture!R_Type like '*" & Me.cmbType & "*' "
     End If
    . Ici ça fonctionne parce que j'ai mis like, mais c'est du truandage : si cmbType =1, il me prend toutes les fournitures qui contiennent 1. Je me perds entre les ', " et & et malgré de nombreux tests je ne suis pas tombé sur la bonne syntaxe

    Et les stats fonctionnent Comme quoi ...

    Merci !!

  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 652
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

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

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 652
    Points : 34 358
    Points
    34 358
    Par défaut
    salut,
    si tu attends une valeur de type texte, tu utilises les quote "'", sinon tu ne mets que la valeur (cas des valeurs numeriques)

  5. #5
    Nouveau membre du Club
    Inscrit en
    Avril 2009
    Messages
    28
    Détails du profil
    Informations forums :
    Inscription : Avril 2009
    Messages : 28
    Points : 25
    Points
    25
    Par défaut
    Merci beaucoup !! Ca fonctionne parfaitement

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

Discussions similaires

  1. [AC-2007] Aide sur Tuto Recherche Multi-Critères adapté
    Par Accessifiante dans le forum IHM
    Réponses: 11
    Dernier message: 25/05/2013, 13h52
  2. [MySQL] Moteur de recherche multi critére - Probléme affichage si champs vide
    Par karpe dans le forum PHP & Base de données
    Réponses: 0
    Dernier message: 28/02/2010, 20h59
  3. problème recherche multi critère
    Par jeck dans le forum Access
    Réponses: 3
    Dernier message: 16/05/2006, 10h42
  4. problème SQL avec le tutoriel recherche multi critère
    Par qbihlmaier dans le forum Requêtes et SQL.
    Réponses: 1
    Dernier message: 05/12/2005, 19h33
  5. problème avec résultat de recherche multi-critères
    Par audrey_desgres dans le forum Access
    Réponses: 2
    Dernier message: 23/06/2005, 11h00

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