[A-03] Réinitialiser un champ après l'utilisation du vbNullString ?
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:
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:
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:
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.