Bonsoir

J’ai un formulaire comprenant un contrôle onglet de trois pages et un sous-formulaire.

Le code suivant me permet de filtrer une rqt générale, mais lorsque je passe d’une page à l’autre le sous-formulaire ne se met pas à jour.

Merci pour votre aide

Salutations

Jacques


Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
Private Sub CtlTab48_Change()
Dim strWhere As String
On Error GoTo gestionerreurs
'--- On déclare les variables
     Dim strSQL As String
     Dim qdf1 As QueryDef
     Dim qdf2 As QueryDef
     Dim A As String
     Dim pos As Long
 
'--- On ouvre les deux requêtes
 
     Set qdf1 = CurrentDb.QueryDefs("rqt General Bis")
     Set qdf2 = CurrentDb.QueryDefs("rqt General")
'--- On efface le where de qdf
     qdf2.SQL = qdf1.SQL
     qdf1.Close
     Set qdf1 = Nothing
 
'--- On crée un nouveau where
     strWhere = " WHERE ("
'--- Liste de l'assemblée générale
     If Me!CtlTab48 < 1 Then
 
       Select Case Right(strWhere, 1)
         Case Is = "("
            strWhere = strWhere & "[Présence]="
    End Select
    End If
 
     If Me!CtlTab48 = 1 Then
 
       Select Case Right(strWhere, 1)
         Case Is = "("
            strWhere = strWhere & "[Présence]=true"
    End Select
    End If
 
      If Me!CtlTab48 > 1 Then
 
       Select Case Right(strWhere, 1)
         Case Is = "("
            strWhere = strWhere & "[Présence]="
    End Select
    End If
 
'--- Mise en place du where
     strWhere = strWhere + " ) order by [tbl adhérent].réfposte DESC;"         'On ferme la parenthèse du Where et on ajoute le trie "Order By"
        If strWhere <> " WHERE ( ) order by [tbl adhérent].réfposte DESC;" Then
         Debug.Print strWhere
 
'--- Cas ou on à sélectionné au moins un critère
     A = qdf2.SQL             ' copie le contenu de la requete dans A
    'Debug.Print A
     A = Replace(A, ";", " ") 'On surprime le ";" qui se trouve à la fin de la requete et qui indique que la requete est fini
     A = Trim(A)              'On suprime les espace dans les coté de la requete [facultatif]
    Debug.Print A
 
'--- On ajoute le where
     qdf2.SQL = A + strWhere
     Debug.Print qdf2.SQL
     Else
'--- Cas ou on à pas sélectionné un critère
     strWhere = " order by [tbl adhérent].réfposte;"
     Debug.Print strWhere
     A = qdf2.SQL
     A = Replace(A, ";", " ")
     A = Trim(A)
     qdf2.SQL = A + strWhere
     Debug.Print qdf2.SQL
End If
 
Me.[sfm Adhérent].Requery
 
qdf2.Close
Set qdf2 = Nothing
Exit Sub
gestionerreurs:
End Sub