J'ai un formulaire avec deux sous-formulaires (sur des pages à onglets séparées). Il s'agit d'un projet MDB dans Access 2003.MS Access form_current() de lancer plusieurs fois
Lors de son ouverture initiale, Form_Current sur le sous-formulaire actif se déclenche une fois, comme il devrait.
Mais lorsque vous passez à un autre enregistrement (par exemple à partir du formulaire principal), il déclenche 4 fois Form_Current sur le sous-formulaire actif. Ensuite, les mouvements d'enregistrement suivants entraînent 2 fois le tir de Form_Current. C'est une douleur, parce que les sous-formulaires ont beaucoup de champs qui sont déplacés et/ou cachés et donc il saute pour chaque Form_Current, sans parler d'être lent.
J'ouvre le formulaire avec un filtre via DoCmd.OpenForm (en fait il envoie le filtre via OpenArgs). FilterOn est défini une seule fois, dans Form_Open sur le formulaire principal , jamais dans les sous-formulaires. Form_Current n'est pas appelé explicitement n'importe où ailleurs dans le code.
Quand je regarde la pile d'appel lorsque les feux Form_Current en mouvement la première fois, il ressemble:
my_subform.Form_Current
[<Debug Window>]
my_subform.Form_Current
Il semble donc que quelque chose dans Form_Current déclenche un autre événement Form_Current. Mais seulement sur le premier mouvement d'enregistrement.
Le code dans Form_Current est quelque peu complexe, impliquant des classes personnalisées et des rappels d'événements , mais ne touche généralement pas les données de table. La seule chose que je peux penser est que le déclenchement d'un Form_Current est qu'il vérifie OldValue sur les contrôles de formulaire - cela peut-il être à l'origine?
Ou toute autre chose vient à l'esprit?
Merci.
Eric
Ceci est un problème connu qui ne peut pas être contournées - l'événement OnCurrent d'un sous-formulaire toujours la première fois. Il n'y a rien que vous pouvez faire à ce sujet, sauf pour utiliser un compteur pour empêcher le code de tirer une deuxième fois. Merci –