OVH Cloud OVH Cloud

Bug Access ??? Une colle pour tous les MVP !

2 réponses
Avatar
Jérémie
Bonjour,

Voici le message que j'avais écrit précédemment sur le forum le 6 août:

Ds un form de saisie d'enregistrement, je voudrais que pour effectuer une
certaine procédure, il faille remplir la totalité des champs au préalable.
Voilà mon code VBA qui ne marche cependant pas à tous les coups :

If IsNull (Me.txtTitre) Or IsNull (Me.txtDate) Or IsNull (Me.txtLien) Or
IsNull (Me.txtModifAuteur) Or IsNull (Me.txtModifOperateur) Then
Msgbox "Toutes les zones ci-dessus doivent être renseignées !", vbOKOnly,
"Erreur dans la saisie"

Il semble que ma structure (bien que tout à fait correct selon Raymond) soit
une vraie passoire et laisse passer certaines choses malgré tout ;-))) !!!

A noter que ma structure conditionnelle est positionnée en début de
procédure et que lorsque ça bug, le type de champs semble aléatoire.

Encore mieux ! Lorsque ça bug, je rétère l'opération en mode "pas à pas" et
cela marche parfaitement. Je désactive ce mode "pas à pas" et cela fonctionne
correctement mais... pour combien de temps

Alors ? Un bug d'Access ou mauvaise manip' de ma part ?

A vos claviers et merci de vos contributions !

Jérémie

2 réponses

Avatar
Raymond [mvp]
Si tu penses que c'est un bug access, et si ça fonctionne en pas à pas (
quelquefois normal) il faut éliminer certaines possibilités d'erreurs du
compilateur et passer sur le niveau de code le plus bas pour ensuite
éventuellement le remonter si ça fonctionne.

Faire:
1er essai:
If (IsNull(Me.txtTitre)) Or _
(IsNull(Me.txtDate)) Or _
(IsNull(Me.txtLien)) Or _
(IsNull(Me.txtModifAuteur)) Or _
(IsNull(Me.txtModifOperateur)) Then
MsgBox "Toutes les zones ci-dessus doivent être renseignées !"
End If

2e essai:

If (Not IsNull(Me.txtTitre)) Then
If (Not IsNull(Me.txtDate)) Then
If (Not IsNull(Me.txtLien)) Then
If (Not IsNull(Me.txtModifAuteur)) Then
If (Not IsNull(Me.txtModifOperateur)) Then
GoTo Continuer
End If
End If
End If
End If
End If
MsgBox "Toutes les zones ci-dessus doivent être renseignées !"
Exit Sub
Continuer:
' ici la suite

ce n'est pas un modèle de procédure mais une façon d'éliminer les bugs
événtuels sur les Or en compilation.


--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Jérémie" a écrit dans le message de
news:
Bonjour,

Voici le message que j'avais écrit précédemment sur le forum le 6 août:

Ds un form de saisie d'enregistrement, je voudrais que pour effectuer une
certaine procédure, il faille remplir la totalité des champs au préalable.
Voilà mon code VBA qui ne marche cependant pas à tous les coups :

If IsNull (Me.txtTitre) Or IsNull (Me.txtDate) Or IsNull (Me.txtLien) Or
IsNull (Me.txtModifAuteur) Or IsNull (Me.txtModifOperateur) Then
Msgbox "Toutes les zones ci-dessus doivent être renseignées !", vbOKOnly,
"Erreur dans la saisie"

Il semble que ma structure (bien que tout à fait correct selon Raymond)
soit

une vraie passoire et laisse passer certaines choses malgré tout ;-))) !!!

A noter que ma structure conditionnelle est positionnée en début de
procédure et que lorsque ça bug, le type de champs semble aléatoire.

Encore mieux ! Lorsque ça bug, je rétère l'opération en mode "pas à pas"
et

cela marche parfaitement. Je désactive ce mode "pas à pas" et cela
fonctionne

correctement mais... pour combien de temps

Alors ? Un bug d'Access ou mauvaise manip' de ma part ?

A vos claviers et merci de vos contributions !

Jérémie




Avatar
Jérémie
Merci pour ta méthode mais il y a un pb au niveau de la fonction
"GoToControl" :

Erreur d'execution '2046' : la commande ou l'action "Atteindre Contrôle"
n'est pas disponible pour l'instant.

D'où cela peut-il venir ?

Merci

Jérémie


Autre moyen très simple que j'utilise et qui fontionne très bien :

(Routine à placer sur l'évènement "On Got Focus" d'un bouton de commande
pour la sauvegarde de l'enregistrement par exemple)

If me.[Nomzone] <> "" then
Else
DoCmd.Gotocontrol "Nomzone"
Me.[Nomboutoncommande].Enabled = False
Exit Sub
End if

(A multiplier autant de fois qu'il y a de zones de saisie.)

Alberto : "Pas MVP mais passionné par la puissance d'Access"


Bonjour,

Voici le message que j'avais écrit précédemment sur le forum le 6 août:

Ds un form de saisie d'enregistrement, je voudrais que pour effectuer une
certaine procédure, il faille remplir la totalité des champs au préalable.
Voilà mon code VBA qui ne marche cependant pas à tous les coups :

If IsNull (Me.txtTitre) Or IsNull (Me.txtDate) Or IsNull (Me.txtLien) Or
IsNull (Me.txtModifAuteur) Or IsNull (Me.txtModifOperateur) Then
Msgbox "Toutes les zones ci-dessus doivent être renseignées !", vbOKOnly,
"Erreur dans la saisie"

Il semble que ma structure (bien que tout à fait correct selon Raymond) soit
une vraie passoire et laisse passer certaines choses malgré tout ;-))) !!!

A noter que ma structure conditionnelle est positionnée en début de
procédure et que lorsque ça bug, le type de champs semble aléatoire.

Encore mieux ! Lorsque ça bug, je rétère l'opération en mode "pas à pas" et
cela marche parfaitement. Je désactive ce mode "pas à pas" et cela fonctionne
correctement mais... pour combien de temps

Alors ? Un bug d'Access ou mauvaise manip' de ma part ?

A vos claviers et merci de vos contributions !

Jérémie