2008-09-17 8 views
1

Mon DB Access 2000 me cause des problèmes - parfois (n'ont pas identifié la cause) le formulaire de «livre» ne fermera pas. Cliquer sur son bouton de fermeture ne fait rien, File -> Close ne fait rien, même en fermant Access, il n'y a pas d'action. Je n'ai pas de gestionnaire OnClose pour ce formulaire. La seule solution de contournement que je peux trouver consiste à ouvrir l'éditeur Vba, en modifiant le code de ce formulaire (en ajoutant même un espace et en supprimant immédiatement l'espace), puis en fermant le formulaire "book", en le fermant et en disant "non, je ne veux pas enregistrer les changements". Alors seulement, il fermera. De l'aide?Qu'est-ce qui peut empêcher la fermeture d'un formulaire MS Access 2000?

+0

Autre solution de contournement: modifiez le formulaire en mode Création, puis refusez l'enregistrement. – Thelema

Répondre

1

Voici un article sur le forum décrivant, je pense, le même problème que vous. Extrait belows indique une solution de contournement.

Ce que je fais est de mettre le code sur le bouton de fermeture qui réaffecte le SourceObject de toute sous-formulaires pour un formulaire vierge, comme:

me subParts.sourceobject = « subBlank « subBlank » est mon forme qui est totalement vide, sans code et les contrôles, etc. DoCmd.Close acForm, « fParts », acSaveNo

les 2 les lignes ci-dessus est la seule façon que j'ai trouvé pour empêcher l'invite d'accès de sauter en haut

http://bytes.com/forum/thread681889.html

0

C'est sûr que c'est bizarre. Avez-vous des contrôles de minuterie sur le formulaire? Si c'est le cas, essayez de le désactiver dans OnClose.

+0

Non, je n'utilise aucune commande de minuterie n'importe où dans le projet entier. – Thelema

0

Il est possible que la boîte de message demandant si vous souhaitez enregistrer les modifications s'affiche derrière le formulaire. Je crois que cette boîte de message est modale, donc vous devez cliquer sur oui ou non avant de pouvoir faire quoi que ce soit avec le formulaire, c'est pourquoi vous ne pouvez pas le fermer.

+0

Je ne crois pas que ce soit le cas, car après avoir essayé de fermer le formulaire, je peux toujours interagir avec le formulaire, passer à l'enregistrement suivant, apporter des modifications, etc. – Thelema

0

Votre formulaire comporte-t-il un événement de déchargement? Cela peut être annulé, et si c'est le cas, le formulaire ne se ferme pas lorsqu'il est en mode formulaire. Il se fermera uniquement en mode Création. Lorsque vous modifiez le code vba, c'est ce que fait le formulaire dans la fenêtre Access lorsque vous modifiez le code.

+0

Le formulaire n'a que des événements OnCurrent, BeforeUpdate et OnOpen. – Thelema

0

Votre forme a une case à cocher, bouton à bascule de bouton ou une option? Il y a un bug dans Access 2000 où l'accès ne fermera pas si vous testez la valeur sans utiliser explicitement la propriété de valeur dans le code vba, comme ceci:

If Me.chkbox Then 

contre:

If Me.chkbox.Value Then 
+0

J'ai une case à cocher sur tous mes formulaires, avec exactement le même code. Je ne pense pas que cela cause mon problème original, mais je vais corriger ça partout pour ne pas rencontrer ce bug. – Thelema

+0

Maintenant, vous savez pourquoi le formulaire ne se ferme pas. –

+0

Le bug de fermeture de formulaire semblait corrigé avant que je fasse ce changement. – Thelema

1

Une autre alternative est

(Me.Checkbox) 

ou ma syntaxe préférée:

(Me!Checkbox) 

Il me semble qu'il y a beaucoup de confusion dans les articles de ce sujet. La réponse qui a été choisie par l'affiche originale cite un article où l'utilisateur avait une invite pour enregistrer modifications de conception au formulaire, mais le problème décrit ici semble être un échec de la forme de fermer, pas un problème de sauvegarde (le le problème de sauvegarde est apparu seulement dans la solution de contournement décrivant aller à la VBE et faire un changement de code).

Je me demande si l'utilisateur d'origine peut avoir des options VBE incorrectes?Si vous ouvrez le VBE et allez à TOOLS | OPTIONS, dans l'onglet GENERAL, vous verrez plusieurs choix concernant la gestion des erreurs. RUPTURE DES ERREURS NON OBLIGATOIRES ou MODULE DE RUPTURE EN CLASSE devrait être choisi, mais il est important de reconnaître que si vous utilisez le premier, vous ne pouvez pas voir certains types d'erreurs. Il n'y a pas vraiment assez de détails pour diagnostiquer beaucoup plus, à part le fait que la référence au contrôle checkbox a causé le problème, mais il y a un certain nombre de bonnes pratiques de codage Access qui peuvent vous aider à éviter certains problèmes. ces bizarreries. Les recommandations relatives au code dans Tony Toews's Best Practices page sont un bon point de départ.

Questions connexes