Attention au nommage d'étiquette !
Tout est bon dans ton code ....sauf le nom de l'étiquette "Err" !
Donne un autre nom à ton étiquette "err" (par exemple "On Error GoTo Erreur") ... car "Err" est un mot réservé. Et tout ira mieux.
JosBK
Citation:
Envoyé par
xeron33
Bonjour à tous,bonne année
Je souhaite utiliser "on error" pour éviter l'affichage du message d'erreur d'Access dans une procedure mais le message d'Access s'affiche quand même :
Code:
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 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52
|
Private Sub Commande62_Click()
Dim var_Option As Boolean
Dim csql5, csql6 As String
Me.Étiquette74.Visible = True
On Error GoTo err
Texte60.Visible = False
Texte35.Visible = False
Texte6.Visible = False
Texte27.Visible = False
Texte11.Visible = False
Étiquette37.Visible = False
Étiquette8.Visible = False
Modifiable64.Visible = False
csql5 = "insert into [TAB_Insertions_Hist] ([N°Insertion],[Num_Archives],[DM],[Adress_Doss],[DATE_Cloture],[OPERATEUR],[Succes])" & _
"values ("
csql5 = csql5 & Chr(34) & Texte35.Value & Chr(34) ' N° Insertion Numérique
csql5 = csql5 & "," & "'" & Texte6.Value & "'" ' N° Dossier Texte
csql5 = csql5 & "," & "'" & Texte27.Value & "'" 'DM Texte
csql5 = csql5 & "," & "'" & Texte11.Value & "'" 'Adresse_Doss Texte
csql5 = csql5 & ",#" & Format(Date, "MM/DD/YYYY") & "#" '[DATE_Cloture]
csql5 = csql5 & "," & Chr(34) & Modifiable64.Value & Chr(34) 'Opérateur Texte
csql5 = csql5 & "," & Option75.Value ' Succes OUI/NON
csql5 = csql5 & ");"
DoCmd.RunSQL csql5
DoCmd.Requery
csql6 = "delete from [TAB_Insertions] "
csql6 = csql6 & "where TAB_Insertions.N°Insertion =" & Texte35.Value & ";"
DoCmd.RunSQL csql6
DoCmd.Requery
Texte60.Visible = False
Texte35.Visible = False
Texte6.Visible = False
Texte27.Visible = False
Texte11.Visible = False
Étiquette37.Visible = False
Étiquette8.Visible = False
Étiquette65.Visible = False
Modifiable64.Visible = False
Form_F_Insert_Clot.F_Insert_Hist.Form.Requery
Commande3.SetFocus
fin:
Exit Sub
err:
MsgBox "err" & err.Number
If err.Number = 2501 Then
MsgBox "Saisie Nom Opérateur Obligatoire !!!", _
vbOKOnly + vbCritical, _
"Cloture Insertions !!! "
End If
Resume fin
End Sub |
Si quelqu'un a une idée.
Merci à tous
réponse à tee_grandbois et loufab
Merci pour vos réponses :
Code:
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 |
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:
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 |
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...
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...:roll: