Recherche multi criteres [Résolu]

Messages postés
35
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
15 décembre 2008
- - Dernière réponse : 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
Afficher la suite 

4 réponses

Meilleure réponse
Messages postés
35
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
15 décembre 2008
3
Merci
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

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 212 internautes nous ont dit merci ce mois-ci

Commenter la réponse de cs_byob
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
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#
Commenter la réponse de cs_DARKSIDIOUS
Messages postés
35
Date d'inscription
vendredi 27 janvier 2006
Statut
Membre
Dernière intervention
15 décembre 2008
0
Merci
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...
Commenter la réponse de cs_byob
Messages postés
15815
Date d'inscription
jeudi 8 août 2002
Statut
Modérateur
Dernière intervention
4 mars 2013
83
0
Merci
Pas d'espace après le premier quote ou avant le deuxième quote peut-être...
Commenter la réponse de cs_DARKSIDIOUS