Recherche multi criteres

Résolu
cs_byob Messages postés 35 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 15 décembre 2008 - 12 avril 2007 à 14:22
cs_byob Messages postés 35 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 15 décembre 2008 - 12 avril 2007 à 16:54
Bonjour,

sur mon formulaire j'effectue une recherche multi critere, l'ennui c'est que cela ne marche pas, j'ai beau chercher un soucis je ne trouve pas mon erreur. 

La premiere requete (SELECT [codefiche], [OF], [Datefiche], [codeOperateur], [codeMachine], [codepiece] FROM fiche; )
s'affiche dans la table mais quand je selectionne un critere la table se vide et puis plus rien. En fait il s'affiche quelque chose dedans seulement quand je selectionne aucun critere
Voici mon code :

Option Compare Database


Private Sub chkOF_Click()


If Me.chkOf Then
    Me.cmbOF.Visible = False
Else
    Me.cmbOF.Visible = True
End If


RefreshQuery


End Sub




Private Sub chkDatefiche_Click()


If Me.chkDatefiche Then
    Me.cmbDatefiche.Visible = False
Else
    Me.cmbDatefiche.Visible = True
End If


RefreshQuery


End Sub


Private Sub chkOperateur_Click()


If Me.chkOperateur Then
    Me.cmbOperateur.Visible = False
Else
    Me.cmbOperateur.Visible = True
End If


RefreshQuery


End Sub


Private Sub chkMachine_Click()


If Me.chkMachine Then
    Me.cmbMachine.Visible = False
Else
    Me.cmbMachine.Visible = True
End If


RefreshQuery


End Sub




Private Sub chkReference_Click()


If Me.chkReference Then
    Me.cmbReference.Visible = False
Else
    Me.cmbReference.Visible = True
End If


RefreshQuery


End Sub
Private Sub cmbOF_BeforeUpdate(Cancel As Integer)


RefreshQuery


End Sub


Private Sub cmbOperateur_BeforeUpdate(Cancel As Integer)


RefreshQuery


End Sub


Private Sub cmbMachine_BeforeUpdate(Cancel As Integer)


RefreshQuery


End Sub




Private Sub cmbDatefiche_BeforeUpdate(Cancel As Integer)


RefreshQuery


End Sub


Private Sub cmbReference_BeforeUpdate(Cancel As Integer)


RefreshQuery


End Sub


Private Sub cmdfiltre_Click()




End Sub


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
           
    End Select
Next ctl


Me.lstResults.RowSource = "SELECT codefiche, OF, Datefiche, codeOperateur, codeMachine, codepiece FROM fiche;"
Me.lstResults.Requery


End Sub


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


SQL = "SELECT codefiche, OF, Datefiche, codeOperateur, codeMachine, codepiece FROM fiche Where fiche!codefiche <> 0 "


If Not Me.chkOf Then    SQL SQL & "And fiche!OF '" & Me.cmbOF & "' "
End If
If Not Me.chkDatefiche Then    SQL SQL & "And fiche!Datefiche '" & Me.cmbDatefiche & "' "
End If
If Not Me.chkOperateur Then    SQL SQL & "And fiche!codeOperateur '" & Me.cmbOperateur & "' "
End If
If Not Me.chkMachine Then    SQL SQL & "And fiche!codeMachine '" & Me.cmbMachine & "' "
End If
If Not Me.chkReference Then    SQL SQL & "And fiche!codepiece '" & Me.cmbReference & "' "
End If


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


SQL = SQL & ";"


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


End Sub




'Private Sub lstResults_DblClick(Cancel As Integer)


'DoCmd.OpenForm "frmAutofiche", acNormal, , "[codefiche] = " & Me.lstResults




'End Sub


 


Merci de m'aider par ce que là je vois pas mon erreur
Merci

4 réponses

cs_byob Messages postés 35 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 15 décembre 2008
12 avril 2007 à 16:54
En faite il ne fallait pas mettre de cote, meme pour les nombres...
Je c pas trop pourquoi,mais bon...
Merci tu m'as mis sur la voie!

ça donne :SQL SQL & "And fiche.codeMachine " & Me.cmbMachine & ""

Merci
3
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 avril 2007 à 14:48
Hum, tu es sûr de ta syntaxe SQL ???

Il me semble pas que le point d'exclamation soit légal, utilise le point plutôt.

De plus, fait attention au champs texte (il doivent être délimité par des quotes), et les dates (qui doivent être délimitées par des dièses, et être au format américain !).

Ce qui donne :
SELECT Numero, Texte, Date FROM table WHERE Numero 0 AND Texte 'Toto' AND date = #12/31/2007#
0
cs_byob Messages postés 35 Date d'inscription vendredi 27 janvier 2006 Statut Membre Dernière intervention 15 décembre 2008
12 avril 2007 à 15:12
Merci pour ta reponse.
pour ce qui est de la date j'ai fait :SQL SQL & "And fiche.Datefiche #" & Me.cmbDatefiche & "# "
et comme tu l'avais prevu c ok, sa marche.
Cependant les autres criteres : OF, Operateur, Machine, et Reference avaient deja des quotes :SQL SQL & "And fiche.codeOperateur '  "  & Me.cmbOperateur &  "  '  "
mais elles sont peut etre mal mises...

Donc la sa marche 1/5 on va dire.
Encore merci, mais si tu veux re-m'expliquer les cotes.... te gene pas...
0
cs_DARKSIDIOUS Messages postés 15814 Date d'inscription jeudi 8 août 2002 Statut Membre Dernière intervention 4 mars 2013 130
12 avril 2007 à 16:00
Pas d'espace après le premier quote ou avant le deuxième quote peut-être...
0
Rejoignez-nous