Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

tri sur plusieurs criteres

1 réponse
Avatar
le meruvien
Bonjour a tous,

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

1 réponse

Avatar
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/