Bonjour,
Je travaille sur access 2003.
Je cherche une fonction me permettant de "réinitialiser" (je ne suis pas sûre que ce soit le bon concept) mon formulaire, ou l'un des champs de mon formulaire, après avoir utilisé la fonction MonChamp.RowSource = vbNullString.
Je m'explique :
1°) J'ai disposé un champ Ab dans un formulaire, qui va chercher sa valeur dans une table A en fonction d'un lien avec une liste globale, ListeA :
2°) Ce champ Ab est une zone de liste déroulante dont la source est une requête complexe.
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 Private Sub ListeA_Click() Dim connec As New Connection Dim Rst As New Recordset Dim str_sql As String str_sql = "SELECT [A].* " _ & "FROM [A] " _ & "WHERE ((([A].Aa)=" & ListeA.Value & "));" Set connec = CurrentProject.Connection Rst.Open str_sql, connec, adOpenDynamic, adLockOptimistic Ab.Value = Rst!Ab Rst.Close connec.Close End Sub
J'ai cependant noté qu'en l'insérant en source de mon champ, lorsque je change mon choix via ma ListeA, ma valeur ne s'inscrit plus (et provoque un débogage : "valeur incorrecte pour ce champ").
J'ai donc créée ma requête en procédure évènementielle sur Ab_GotFocus :
3°) Puis la vide sur ListeA_Click avec la fonction vbNullString :
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 Private Sub Ab_GotFocus() Dim connec As New Connection Dim Rst As New Recordset Dim str_sql As String str_sql = "SELECT..." Set connec = CurrentProject.Connection Rst.Open str_sql, connec, adOpenDynamic, adLockOptimistic Ab.RowSource = str_sql Ab.Requery Rst.Close connec.Close End Sub
4°) Là se situe le problème.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 Ab.RowSource = vbNullString Ab.Requery
Sur ListeA_Click, cela continue de déboguer.
Mais si je ferme mon formulaire et le rouvre, cela fonctionne de nouveau.
D'où l'idée de trouver une fonction qui réinitialise mon champ Ab.
Une petite idée ?
Merci d'avance.
Partager