Bonsoir,
Il suffit de prévenir l'utilisateur avant de faire l'insertion. C'est en général comme cela qu'on procède avec une IHM, on fait les contrôles avant d'insérer les données et si tout est bon, on valide.Oui c'est justement le motif de ma demande; éviter le message d'Access si utilisateur ne renseigne pas le contrôle par "on error"
Comme loufab te l'a dit:Par exemple, au début de ta procédure (avant de rendre les contrôles invisibles) tu mets :Envoyé par loufab
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 If Me.Modifiable64 = "" Then MsgBox "Saisie Nom Opérateur Obligatoire !!!", vbOKOnly + vbCritical, "Cloture Insertions !!! " Me.Modifiable64.SetFocus Exit sub End IF
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Bonsoir,
Je complèterais par ce test :
Code : Sélectionner tout - Visualiser dans une fenêtre à part If Me.Modifiable64 = "" or isnull(me.modifiable64) Then
Détecter les modifications formulaire Cloud storage et ACCESS
Classe MELA(CRUD) Opérateur IN et zone de liste Opérateur LIKE
Visitez mon Blog
Les questions techniques par MP ne sont pas lues et je ne pratique pas la bactériomancie
ou bien
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 If Me.Modifiable64 & "" = "" Then ' ou aussi If Nz(Me.Modifiable64,"") = "" Then
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
Merci pour vos réponses :
Oui c'est que je compte faire si jamais je n'arrive pas à récupérer l'erreur d'Access, voilà un exemple de procédure que j'ai écrite sur laquelle la récupération de l'erreur d'Access pour en faire un message personnel fonctionne :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11 If Me.Modifiable64 = "" Then MsgBox "Saisie Nom Opérateur Obligatoire !!!", vbOKOnly + vbCritical, "Cloture Insertions !!! " Me.Modifiable64.SetFocus Exit sub End IF If Me.Modifiable64 = "" or isnull(me.modifiable64) Then if Me.Modifiable64 & "" = "" Then ' ou aussi If Nz(Me.Modifiable64,"") = "" Then
C'est le cas ou un champ clé étrangère n'est pas renseigné: message d'Access sur l'erreur 3101 avec on error le MsgBox "Saisie Incorecte" s'affiche et pas le messge d'Access, sur mon problème le message d'Access continue à s'afficher puis s'affiche le message perso géré avec on error, c'est peut être parce que Modifiable64 n'est pas une clé je ne sais pas...
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 Private Sub Commande66_Click() Dim csql5 As String If IsNull(Me.Texte35) Then MsgBox ("Saisie N°Dossier Obligatoire !") Me.Texte35.SetFocus Exit Sub End If On Error GoTo Err DoCmd.RunCommand acCmdSaveRecord Me.RecordSource = Me.RecordSource Me.Sous_Formulaire_Insertions.Form.RecordSource = Me.Sous_Formulaire_Insertions.Form.RecordSource Texte35.Locked = True fin: Exit Sub Err: MsgBox "Saisie Incorecte !", _ vbOKOnly + vbExclamation, _ "Saisie Insertions !!! " If Me.Texte6 <> "" Or Not IsNull(Me.Texte6) Then Me.Texte27.SetFocus Else Me.Texte6.SetFocus End If Resume fin End Sub
Merci à vous deux pour votre aide et à tous les autres, je laisse le sujet ouvert si quelqu'un a la solution si il y a une solution...
ce n'est pas la bonne méthode, je te conseille vivement de faire tes contrôles avant l'insertion, c'est une absurdité de vouloir "trapper" les erreurs système pour contrôler la saisie.Oui c'est que je compte faire si jamais je n'arrive pas à récupérer l'erreur d'Access, voilà un exemple de procédure que j'ai écrite sur laquelle la récupération de l'erreur d'Access pour en faire un message personnel fonctionne :
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
c'est une absurdité de vouloir "trapper" les erreurs système pour contrôler la saisie.
oui Chef
Mais alors pourquoi on error ?
Pour des erreurs d'un "plus haut niveau" ?
Merci
Bonjour
Oui, ce sont les erreurs système inattendues (celles que l'on n'a pas prévu dans les contrôles).Mais alors pourquoi on error ?
Pour des erreurs d'un "plus haut niveau" ?
Merci
Le fait d'attraper une erreur et de l'afficher permet d'alerter l'utilisateur et lui évite de se trouver devant la fenêtre de code avec l'instruction en erreur et permet au développeur de corriger le code en conséquence si besoin, mais cela ne devrait arriver que très rarement (sauf peut-être les conflits d'écritures en mode multi-utilisateurs mais même dans ce cas on peut prévoir des routines pour continuer le traitement)
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
*****************************************************
Merci pour ta réponse, j'en tiendrai compte j'ai finalement codé comme ca sur le focus du contrôle suivant :
Merci à toi
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 Private Sub Commande62_GotFocus() If IsNull(Me.Modifiable64) Or Null Then MsgBox "Saisie Nom Opérateur Obligatoire !!!", vbOKOnly + vbCritical, "Cloture Insertions !!! " Me.Modifiable64.SetFocus End If End Sub
A+
Bonsoir,
méfie-toi, avec GotFocus l'affichage du message sera systématiquement provoqué et la sortie du champ sera impossible tant que l'utilisateur n'aura pas saisi quelque chose.Merci pour ta réponse, j'en tiendrai compte j'ai finalement codé comme ca sur le focus du contrôle suivant :
Pour moi, le mieux c'est de faire les contrôles au moment de la validation (clic sur le bouton) mais c'est toi qui voit.
Or Null est en trop
Code : Sélectionner tout - Visualiser dans une fenêtre à part If IsNull(Me.Modifiable64) Or Null Then
Quand on est derrière l'écran on n'a aucun clavier sous les mains ...
ah non ? donc devant l'écran c'est la connectique ?
***************************************************
Merci de ta remarque je l'avais fait sur l'évènement "sur Clic" au départ mais je ne pouvais pas "revenir" sur le contrôle "Modifiable64"
C'est pour ça que je l'ai fait sur le focus de Commande62 (le contrôle qui suit Modifiable64).
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 If IsNull(Me.Modifiable64) Or Null Then MsgBox "Saisie Nom Opérateur Obligatoire !!!", vbOKOnly + vbCritical, "Cloture Insertions !!! " Me.Modifiable64.SetFocus End If
Si tu as une idée comment résoudre cet inconvénient, j'ai tout de même testé le programme avec ou sans données dans "Modifiable64" pas de problèmes le message ne s'affiche pas tout le temps.
Oui en effet Or Null est en trop faute d'étourderie...
Merci
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager