Bonjour,Semi-résolu disons --> solution de contournement : le plus utiliser le recordset lié au recordsource du formulaire et les champs liés aux contrôles mais utiliser un nouveau recordset déclaré au niveau du formulaire, laissé ouvert, et dont VBA utilise les enregistrements pour remplir (ou non) les contrôles au gré de la navigation de l'utilisateur.
J'ai un problème équivalent à celui décrit dans ce thread :
http://www.developpez.net/forums/d15...uete-resultat/
J'ai un formulaire qui se base sur un RecordSource. La requête sous-jacente est calculée dynamiquement en fonction des choix et saisies de l'utilisateur sur des contrôles de filtrage.
Le problème intervient lorsque le choix de l'utilisateur aboutit à une requête sans enregistrement. Dans ce cas, le comportement d'Access consiste à afficher le formulaire complètement vide, sans aucun contrôle. Bref l'utilisateur ne peut plus modifier son choix, est bloqué et ne peut plus que fermer le formulaire.
La solution de contournement consiste à vérifier préalablement que la requête renvoie bien des enregistrements et à alors modifier le RecordSource.
Le problème est que la requête sous-jacente est déjà très lourde et que cela m'emm... de devoir la faire tourner une seconde fois pour pas grand chose.
Une autre solution consiste à ne plus passer par un RecordSource mais à peupler directement chaque champ. En fait, j'ai testé comparativement. Avec le RecordSource, l'affichage du 1er enregistrement est plus long du fait de l'exécution de la requête "complète" mais ensuite la navigation entre enregistrement est beaucoup plus fluide. Or le mode d'utilisation de l'appli correspond à peu d'actions de filtrage pour beaucoup d'actions de navigation. Donc c'est la solution avec la RecordSource qui est la plus efficace.
Connaîtriez-vous une autre solution à ce problème ?
Merci d'avance.
Partager