Bonjour,
le nombre de critère n'a pas d'importance.
Mais il va sans doute te falloir une bonne dose de patience pour coder le sql
Je procèderais comme ceci
contruire le sql de la source de ta liste ou du sous-formulaire qui doit accueillir le résultat.
Structuré par exemple comme ceci
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Public Sub RefreshQuery()
'Public car appel extérieur (frmMàJ)
Dim sql As String, ClauseWHERE As String
sql = "SELECT * FROM TaTable"
'Aménager la clause Where
If Not Me.chkAuteur Then
ClauseWHERE = ClauseWHERE & "And CodeArticle like '*" & Me.txtRechAuteur & "*' "
End If
If Not Me.chkFamille Then
If Me.ContientOuPas = "contient" Then
ClauseWHERE = ClauseWHERE & "And Article = '" & Me.cmbRechFamille & "' "
Else
ClauseWHERE = ClauseWHERE & "And Article <> '" & Me.cmbRechFamille & "' "
End If
End If
If Not Me.chkType Then
ClauseWHERE = ClauseWHERE & "And Cap = '" & Me.cmbRechType & "' "
End If
Select Case Me.TypeRetard
Case 1
ClauseWHERE = ClauseWHERE & "And [Date du jour] Is Null"
Case 2
ClauseWHERE = ClauseWHERE & "And [Date du jour] Is not Null"
End Select
If Len(ClauseWHERE) = 0 Then
GoTo AménagerLaQueueSQL
Else
' supprimer le 1er And et Aménager la tête de clause
ClauseWHERE = " Where " & Right(ClauseWHERE, Len(ClauseWHERE) - 3)
sql = sql & ClauseWHERE
End If
AménagerLaQueueSQL:
sql = sql & ";"
'Debug.Print sql
Me.Sfrm.Form.RecordSource = sql
Me.Sfrm.Form.Refresh
End Sub |
et tester au fur et à mesure que tu prends un critère en charge.
Bon courage iapluka.
Partager