Bonjour.
J'ai réalisé une petite base de données qui fonctionne pas trop mal, mais j'aimerais encore l'améliorer.
J'ai un formulaire de consultation, dont certains critères de choix sont issus de listes déroulantes.
J'avais tapé directement le code SQL (zone de liste déroulante/ données/ contenu) de la requête pour les choix possibles dans une des listes.
Là, j'aimerais que cette liste puisse avoir des choix très différents, aussi j'aimerais baser ma liste non pas sur un code rentré à la main, mais sur une requête SQL enregistrée que je pourrais modifier via le VBA.
Ma liste s'appelle Rubrique1, la requête s'appelle "Rqt Rub1".
J'utilise un bouton "case à cocher" dont le nom est "CocherLiées".
Voici mon code:
L'idée c'est grâce à la case à cocher d'avoir une bascule qui permet d'attribuer un code différent à la requête SQL sur laquelle est basée la liste de choix.Private Sub CocherLiées_Click()
Dim strSQL As String
If Me.CocherLiées Then
strSQL = "SELECT DISTINCT ArboTbl1.Rubrique, ArboTbl1.enfant FROM ArboTbl1;"
CurrentDb.QueryDefs("Rqt Rub1").SQL = strSQL
Rubrique1.Value = Null
Rubrique1.Requery
MsgBox "Modifié 1"
Else
strSQL = "SELECT DISTINCT ArboTbl2.Rubrique, ArboTbl2.enfant FROM ArboTbl2;"
CurrentDb.QueryDefs("Rqt Rub1").SQL = strSQL
Rubrique1.Value = Null
Rubrique1.Requery
MsgBox "Modifié 2"
End If
Et là, j'ai un problème: la requête "Rqt Rub1" est bien modifiée à chaque clic (je peux le vérifier en la lançant à part), mais bien que j'utilise un Rubrique1.requery, la liste n'est jamais modifiée, ou plus exactement elle l'est mais à chaque nouveau lancement du formulaire (en fonction du code qui était dans la requête "Rqt Rub1" au moment du lancement).
On a l'impression que le formulaire "fige" la requête initiale au moment du lancement, access utilise-t'il une copie de la requête ?
Inutile de me dire que j'aurais pu mettre Rubrique1.requery après le end if, c'était juste un essai dans la foulée.
Si vous avez des idées.
Partager