0
votes

Formulaire d'accès refusant de changer la mise au point d'une entrée de texte à une autre

J'ai un formulaire de connexion de base dans Microsoft Access, où le script VBA, je dois effacer toute la zone de texte 'ne changera pas la mise au point d'une zone de texte à une autre. La popup que je reçois autant que vous avez peut-être supposée est une erreur d'exécution '2110'. Même après plusieurs étapes de débogage et en veillant à ce qu'elles sont activées et visibles, le script ne fonctionnera tout simplement pas comme prévu.

Voici mon code: P>

1 | Private Sub Form_load()
2 |     If Me.FirstInput.Visible = False Then
3 |         Me.FirstInput.Visible = True
4 |     End If
5 |     If Me.LastInput.Visible = False Then
6 |         Me.LastInput.Visible = True
7 |     End If
8 |     If Me.ErrorTxt.Visible = True Then
9 |         Me.ErrorTxt.Visible = False
10|     End If
11|     Me.FirstInput.SetFocus
12|     Me.FirstInput.Text = ""
13|     Me.LastInput.SetFocus
14|     Me.LastInput.Text = ""
15|     Me.FirstInput.SetFocus
16|     Me.LastInput.Visible = False
17| End Sub


5 commentaires

Est-ce que ce contrôle "SlastInput" visible, activé, non bloqué? Est-ce une étiquette qui, par définition, ne peut pas recevoir la mise au point? Rien que 'Erreur Time "2110' est affichée dans le message d'erreur? Je ne peux pas reproduire cette erreur pour mieux comprendre ce que cela signifie ...


@Faneduru salut, merci pour votre réponse. La zone de texte FirstInput et SlastInput 'ont-elles leurs propriétés activées et visibles définies sur Oui. Ils ont tous deux des étiquettes aussi attachés. Ni sont verrouillés non plus non plus, ce que je suppose que vous voulez dire par bloqué.


Existe-t-il un code d'événement en cours d'exécution lorsque me.firstinput.text = "" est exécuté? Pourrait-il s'agir de bloquer la mise au point de bouger? Un code de validation peut-être?


Il y a du code de validation, mais cela n'est pas couru aussi loin que je suis au courant. Il y a 3 événements qui appellent le sous-programme, lorsque le bouton de connexion est cliqué, lorsque le FirstInput capture la touche Entrée et lorsque le SlenerInput capture la touche ENTER. Cela aurait-il pu être couru lors du changement du texte?


Il peut ne pas résoudre le problème, mais s'il vous plaît considérer un point sur ceci: (1) Vous n'avez pas besoin de vérifier si le contrôle est visible, le réglage simplement sur Visible = true est suffisant . Si c'était déjà visible, aucun mal n'est fait. (2) Vous pouvez éviter de définir l'objectif si vous utilisez l'attribut .value pour vider le champ de texte.


4 Réponses :


0
votes

Vérifiez la propriété "Activé" de votre contrôle. Je parie qu'il est réglé sur False.


7 commentaires

Nope, ils sont tous deux réglés à oui.


Avez-vous vérifié l'un à la fois? Vous ne pouvez pas vérifier la propriété activée sur deux objets en même temps. L'accès prendra le réglage pour le premier et l'affichera.


Je l'ai fait, mais ils ont tous deux la même valeur après avoir vérifié individuellement. Merci de me dire que cependant, je ne le savais pas du tout. J'étais complètement sous l'impression que le champ serait vide si les valeurs des objets dans la sélection sont différentes. Plus vous savez, je suppose


OK, essayons cela, au lieu de définir la propriété de texte, définissez la propriété de valeur. Qui nie complètement l'utilisation de .Setfocus.


Hey désolé pour la réponse tardive @wakgtech. J'ai tout changé pour valider en supposant que cela détient la même fonction. Je suis également venu à comprendre que lorsque je fais cela, il finit également à exécuter la fonction de validation que j'ai mentionnée ci-dessus, donc l'élément de texte d'erreur que j'ai fini par apparaître visible même lorsque je mets à être invisible à la fin de la fin de la fin. le programme de chargement de formulaire.


Correct, car même si vous le définissez pour être invisible sur la charge, lorsque vous modifiez la propriété de la valeur qui tire à nouveau l'événement. Je dois dire que je suis curieux d'aboutir cette fonction de validation. Qu'est-ce qu'il vérifie? Pourriez-vous le poster? Il peut y avoir d'autres façons de le faire (il y a toujours!)


Laissez-nous Continuez cette discussion dans le chat .



1
votes

La façon dont vous utilisez la propriété visible, je suppose que vous souhaitez forcer l'utilisateur à entrer en premier au prénom, et je suppose que vous avez une procédure d'événement pour masquer le LastInput Textbox si aucun prénom raisonnable n'a été entré ...

Malheureusement, la modification de la valeur du texte est comme la saisie de la valeur dans la zone de texte, ce qui signifie que le AfterupDate Evénement est tiré qui masquerait la zone de texte de afin qu'il ne puisse pas obtenir le focus.

Je suggère de changer le code un peu et d'utiliser le Valeur Propriété (qui correspond à la propriété par défaut) pour vider les deux textes de texte: xxx


2 commentaires

Ok, maintenant j'ai un problème différent. Je n'ai aucune erreur de temps d'exécution en tant que telle, toutefois une erreur logique auquel je ne comprends pas vraiment avec tous les événements avec une boîte de saisie '. Maintenant, lorsque le formulaire charge, les premiers champs d'entrée et de dernière entrée sont affichés, ce qui signifie que le code de validation est en cours d'exécution? Mais aussi que chaque fois que j'essaie de cliquer sur une zone de texte, cela dira que je suis connecté pour une raison quelconque? Cependant, à ce stade, je n'ai aucune validation complète pour le prénom et le nom de famille dans le tableau des enregistrements.


Nous ne connaissons pas votre "code de validation" ni quel événement le fait courir. Avez-vous besoin de valider les boîtes de texte vierges lorsque le formulaire se charge?



0
votes

Essayez de référencer le formulaire explicitement comme dans formulaire! form1.lastinput.setfocus Je sais que cela semble idiot, mais j'ai remarqué de ma propre expérience personnelle que j'ai rencontré des hochcups dans l'accès comme vous l'avez mentionné et une référence explicite la clarifiera.


0 commentaires

0
votes

OK, j'ai donc réussi à résoudre le problème à la main, selon une conversation entre moi et @wakgtech. Nous avons décidé entre nous-mêmes que, au lieu de devoir mettre l'accent sur la modification de la propriété texte de l'objet, qu'il serait préférable de fermer à l'aide de la méthode .Setfocus tous ensemble et Utilisez plutôt la propriété valeur .

Cependant, ce que j'ai découvert, c'est que l'événement d'onenter de la zone de texte a été appelé lorsque j'ai changé la valeur des éléments en question. Donc je me suis retourné et fini par les supprimer, sans distinction.

Les trois fois que le code «validation» a été appelé, était lorsque la touche de signalisation de tentative a été cliquée et si la touche Entrée était enfoncée dans l'une de la zone de texte ». Où les valeurs de la zone de texte 'où vides de toute façon, entraînant l'élément de message d'erreur visible à travers cela.

Je remercie tout le monde dans ce fil de votre soutien, si vous avez d'autres questions sur la manière dont cela a été résolu, laissez-moi savoir dans un commentaire. Dès maintenant, comme je ne peux pas le fermer moi-même, je déclare ma question répondue / fermée. Merci encore!


0 commentaires