avec un formulaire de recherche multi-critere, je veut rechercher par
exemple :des clients qui ont du materiel "horman" et habitant dans les
departement "95" et "60"
si je recherche sur "horman" et "95", ça marche, mais dès qu'il y a
plusieurs departement, ça trie plus !! pourquoi ???
voici ma procedure de tri.
Private Sub VALIDER_Click()
Dim strfiltre As String
Dim strStatut As String
Dim avarMotsClefs As Variant
Dim varMotClef As Variant
Dim e As Report, aql As String
SQL = "": strfiltre = ""
SQL = SQL & "select distinct [societe],adresse_1,adresse_2,c_postal,ville
from [rqt clients]"
SQL = SQL & "inner join [rqt portes clients]"
SQL = SQL & " on [rqt clients].codeclient=[rqt portes clients].codeclient "
On Error Resume Next
' Filtre sur la marque (texte)
If Not IsNull(Me.choix1) Then
strfiltre = "([marque]='" & Me.choix1 & "')"
End If
' Filtre sur le modele
If Not IsNull(Me.choix2) Then
If strfiltre <> "" Then strfiltre = strfiltre & " AND "
strfiltre = strfiltre & "([modele]='" & Me.choix2 & "')"
End If
' Filtre sur un 1er departement
If Not IsNull(Me.choix3) Then
If strfiltre <> "" Then strfiltre = strfiltre & " AND "
strfiltre = strfiltre & "([departement]='" & Me.choix3 & "')"
End If
' Filtre sur un 2 eme departement
If Not IsNull(Me.choix4) Then
If strfiltre <> "" Then strfiltre = strfiltre & " AND "
strfiltre = strfiltre & "([departement]='" & Me.choix4 & "')"
End If
DoCmd.OpenReport "etiquettes clients/portes", acViewDesign
Set e = Reports![etiquettes clients/portes]
e.RecordSource = SQL
DoCmd.Close acReport, "etiquettes clients/portes", acSaveYes
DoCmd.OpenReport "etiquettes clients/portes", acPreview
DoCmd.Close acForm, "selection mailings portes"
End Sub
Bien que si je met un point d'arret, apres le 2 eme departement, et que dans
la fenetre d'execution je demande la valeur de strfiltre, j'obtient :
? strfiltre
([marque]='HORMANN') AND ([departement]='95') AND ([departement]='60')
merci
roger
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Eric
Bonjour Roger
Je n'ai pas tout lu mais je pense que tu dois mettre un OR et non un AND comme opérateur entre les départements et grouper la condition sur les départements (mettre des parenthèses), afin d'obtenir :
strfiltre = ([marque]='HORMANN') AND ([departement]='95' OR [departement] ='60')
et non : strfiltre = ([marque]='HORMANN') AND ([departement]='95') AND ([departement]='60')
car le client habite dans le 95 ou le 60.
Ok ?
-- A+ Eric Lien à suivre : http://users.skynet.be/mpfa/
Bonjour Roger
Je n'ai pas tout lu mais je pense que tu dois mettre un OR et non un AND
comme opérateur entre les départements et grouper la condition sur les
départements (mettre des parenthèses), afin d'obtenir :
strfiltre = ([marque]='HORMANN') AND ([departement]='95' OR [departement]
='60')
et non :
strfiltre = ([marque]='HORMANN') AND ([departement]='95') AND
([departement]='60')
car le client habite dans le 95 ou le 60.
Ok ?
--
A+
Eric
Lien à suivre : http://users.skynet.be/mpfa/
Je n'ai pas tout lu mais je pense que tu dois mettre un OR et non un AND comme opérateur entre les départements et grouper la condition sur les départements (mettre des parenthèses), afin d'obtenir :
strfiltre = ([marque]='HORMANN') AND ([departement]='95' OR [departement] ='60')
et non : strfiltre = ([marque]='HORMANN') AND ([departement]='95') AND ([departement]='60')
car le client habite dans le 95 ou le 60.
Ok ?
-- A+ Eric Lien à suivre : http://users.skynet.be/mpfa/