Visites

   visiteurs

   visiteurs en ligne

Sujet n°165 problème de critère
    par skipyjp le 03/08/2008 : 13:18

Salut à toi tongue

 

Je me suis servie de tuto de caféine pour une recherche multicritère!!!

Ma zone de liste déroulante

Private Sub chkSecteur_Click()
If Me.chkSecteur Then
    Me.txtRechSecteur.Visible = False
Else
    Me.txtRechSecteur.Visible = True
End If

RefreshQuery

End Sub

et l'appel

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 "cmb"
            ctl.Visible = False
           
        Case "txt"
            ctl.Visible = False
            ctl.Value = ""
           
    End Select
Next ctl

Me.lstResults.RowSource = "SELECT ID, Réf articles FROM T_Articles;"
Me.lstResults.Requery
puis la recherche

Private Sub RefreshQuery()
Dim SQL As String
Dim SQLWhere As String

SQL = "SELECT ID, Réf articles, Désignation, Famile, Fournisseur, Secteur, Emp/articles, Zone, Kanban o/n FROM T_Articles Where T_Articles!ID <> 0 "

If Not Me.chkSecteur Then
    SQL = SQL & "And T_Articles!Secteur like '*" & Me.txtRechSecteur & "*' "
End If
If Not Me.chkFamille Then
    SQL = SQL & "And T_Articles!Famille like '*" & Me.txtRechFamille & "*' "
End If

SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))

SQL = SQL & ";"

Me.lblStats.Caption = DCount("*", "T_Articles", SQLWhere) & " / " & DCount("*", "T_Articles")
Me.lstResults.RowSource = SQL
Me.lstResults.Requery

End Sub

avec les RefreshQuery bien positionnée!!

 

Le problème j'ai une recherche sur des champs de plusieur valeur, et l'erreur est que la recherche peut pas être utilisé dans une close where ou having.....l'erreur est constament sur:

Me.lblStats.Caption = DCount("*", "T_Articles", SQLWhere) & " / " & DCount("*", "T_Articles")

 

Donc que puije faire pour pallier cela dans l'attende amicalement!!!

 


Réponse n° 1 par 3stone le 04/08/2008 : 23:40
Bonjour,


Dixit...
Je me suis servie de tuto de caféine pour une recherche multicritère!!!


Je ne connais pas tout ceux qui utilisent Access biggrin

Sérieusement, je n'ai pas épluché longuement ton code, mais je remarque qu'il est truffé de "Réf articles", "Emp/articles", ou même un "Kankan o/n" frown

On le répète à longueur de journée...
RefArticle, Emp_articles, Kankan_o_n sont tout aussi lisible dans le code et on l'avantage de ne pas nécessiter de crochets "[Réf articles]" dès la présence d'un espace ou autres caractères accentué ou impropres.

Cordialement,
Pierre(3stone)

Réponse n° 2 par skipyjp le 05/08/2008 : 20:01

Salut à toirolleyes comme toujours merçi de réponde et donnée tes conseilles!!!

J'ai fait avec les [] résultat pareil, et je les avait enlever quand j'ai re copier le code!!

Dès que je décoche mon chkSecteur "case à cocher", pour faire apparaitre txtRechSecteur "zone de liste déroulante" j'ai constament cette erreur Erreur d'exécution T_Articles!Secteur ne peut pas être utilisé dans une clause WHERE ou HAVING!!Par contre ce code fonctionne très bien si je fait la recherche sur Réf qui n'est pas une Expression, mais un Regroupement...Et pour (chkFamille-txtRechFamille),c'est pareil? Je pense que sur cette ligne de code je doit avoir une erreur? "Me.lblStats.Caption = DCount("*", "T_Articles", SQLWhere) & " / " & DCount("*", "T_Articles")"Dans l'attende bien amicalement et de bonne Vacance si c'est le cas!!!

Réponse n° 3 par 3stone le 05/08/2008 : 22:00
Salut,

J'ai regardé un peu mieux ton code wink
Et il me semble que tu as écrit une grosse erreur.

Dans ton SQLWhere, tu écris:


Dixit...
SQLWhere = Trim(Right(SQL, Len(SQL) - InStr(SQL, "Where ") - Len("Where ") + 1))


Ce qui n'est pas correct, puisque ton SQL contient un "Select" tongue

A la place de "T_Articles" tu peux mettre le nom du requête enregistrée. Par contre, dans la section "Where" tu ne peux mettre que l'équivalent de la section Where d'une requête, mais sans le mot Where!

Lire la documentation en ligne permet de savoir comment utiliser les commandes biggrin

Cordialement,
Pierre(3stone)


Réponse n° 4 par Skipyjp le 05/08/2008 : 22:55
Re lol cry, c'est ce qui fait encore la différence entre toi et moi, le pro et l'amateureek, comme dirait un certain le PLUS vient a force de commetre des erreurs, encore merci à toi, et obnne soirée!!!Cordialement JP

[ Retour à la liste des sujets ]

Recherche



Préférences

Se reconnecter
---

Votre nom (ou pseudo) :

Votre code secret


 Nombre de membres 1 membre


Connectés :

( personne )

Haut