J'ai un script qui utilise une fenêtre avec des cases à cocher, des listes déroulantes, des modifications de numéro et des modifications de texte pour saisir les utilisateurs, puis les utilise pour analyser les données (voir la photo ci-jointe pour en savoir plus sur la boîte). Pour faciliter l’utilisation des différents jeux d’options, j’ai inclus un bouton Réinitialiser qui ferme tous les tableaux de données ouverts et les rapports et efface toutes les options entrées. Généralement, le bouton fonctionne correctement, mais il génère parfois une erreur lorsque vous essayez de réinitialiser la case à cocher pour une plage de dates individuelle ou la première zone d'édition de texte sous Entrer codes NC. L'alerte d'erreur indique "Envoyer un objet pouvant être scripté dans l'accès ou l'évaluation de" Envoyer "". J'ai inclus une image de la boîte d'alerte et les options que j'ai sélectionnées lorsque l'erreur s'est produite. Le script attaché est uniquement la partie en question, il est donc configuré pour établir la zone de saisie des données, puis obtenir les options saisies et peut être réinitialisé et fermé. Je ne suis pas sûr de ce qui va se passer avec la case à cocher et la zone de saisie de données car le reste d'entre elles semblent se réinitialiser correctement. Toute aide serait la bienvenue.


Veuillez noter que tout autre script ou procédure utilisant l'une de ces variables ou toute table pouvant porter un nom de colonne similaire à une de ces variables même si elle était ouverte pendant quelques secondes seulement peut entrer en conflit avec le nom de l'objet d'affichage.
Je vais certainement examiner les espaces de noms. Si le script a été exécuté deux fois lorsque l'erreur s'est produite, je pense que ce que vous proposez résoudrait le problème, mais lorsque vous appuyez sur le bouton de réinitialisation, une nouvelle fenêtre de saisie n'est pas générée. Seules les valeurs des cases pour prendre les données sont réinitialisées aux valeurs par défaut. Cela et le fait que l'erreur ne se produit que parfois et seulement avec certaines des cases à cocher me porte à penser qu'il pourrait y en avoir plus.
Ce type d'erreur se produit lorsque l'objet n'existe plus ou en cas de problème de portée, de conflit de nom. Je m'attends à ce que parfois cela puisse être causé.
Je peux reproduire cette erreur:
- Exécuter votre script, définir des valeurs
- Exécutez votre script à nouveau
- Fermer la 2ème fenêtre de dialogue
- Allez à la première fenêtre et sélectionnez Réinitialiser, l'erreur se produira. En effet, toutes les boîtes d'affichage d1, d2, etc. ont été affectées à la deuxième fenêtre de dialogue. Réinitialiser tente d'accéder à un objet qui n'existe plus.
Programmer avec une référence à ce << parent supérieur puis rechercher l'objet ou utiliser le nom de la fenêtre. fenêtre: d1, fenêtre: d2, etc. va résoudre ce problème.
Un grand avantage de la création d’une application est que chaque instance a son propre espace de noms et facilite la rédaction de scripts.
Une autre approche consiste à ajouter en haut de votre script Noms par défaut ici (1); et enregistrez-le.
Fermez toutes les instances de votre fenêtre de dialogue.
Maintenant, lancez ce script (en changeant le chemin si nécessaire)
Names Default to Here(1);
Include ("c:\temp\Reset Boxes Question Script.jsl", <<NEW context=""></NEW>Modifiez certaines valeurs dans la première fenêtre de dialogue, puis fermez la deuxième fenêtre. Revenez maintenant à la première fenêtre (en répétant simplement les étapes qui ont provoqué l'erreur) et appuyez sur Réinitialiser. Pas d'issues.
L'utilisation d'une seule Include () avec un nouveau contexte crée un espace de nom anonyme pour le diaolog et ses objets nommés, et le problème de portée est résolu.
Vous devriez lire sur les espaces de noms.