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 :

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
2°) Ce champ Ab est une zone de liste déroulante dont la source est une requête complexe.

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 :

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
3°) Puis la vide sur ListeA_Click avec la fonction vbNullString :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
    Ab.RowSource = vbNullString
    Ab.Requery
4°) Là se situe le problème.
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.