Bonjour,
j'ai un formulaire indépendant qui me sert a saisir des données.
J'ai un bouton qui me permet d'incrémenter ces données dans une table (par VBA)
Je n'aime pas les messages d'erreurs access, je préfère les personnaliser.
Access me crie dessus quand je veux incrémenter ces données en doublons.
Il existe bien le docmd.setwarnings , mais il ne détecte pas l erreur, il la rend muette.
J'ai trouvé ceci sur le merveilleux site developpez.com
Super intéressant, car selon le type d erreur je peux personnaliser le message d'access.
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 Sub Form_Error(DataErr As Integer, Response As Integer) ' Si l'erreur est due à un doublon, la fonction affiche un message permettant d'annuler une commande. Const ERR_DOUBLON = 3022 ' erreur de doublon ' DataErr reçoit le code erreur de la part du moteur de la bdd ou de l'interface Select Case DataErr Case ERR_DOUBLON 'Votre message... MsgBox "Ce nom existe déjà.", vbExclamation, "Attention" 'La zone a surveiller [Client].SetFocus 'Demande à Access de continuer l'exécution sans afficher le message standard Response = acDataErrContinue End Select End Sub
Mais...
ce code est sur erreur dans le formulaire.
Or quand j'utilise le code VBA pour incrémenter ma table (qui est indépendante du formulaire en question), le code sur erreur du formulaire n'est jamais appelé.
Je voudrais donc savoir si:
on peut détecter le numero de l erreur lors de l'execution de code VBA, quand cette erreur est une erreur de doublons sur clef primaire (sachant que cette erreur ne fait pas planter le code, elle est liée aux tables).
Je peux, toujours par le code, faire un test sur les données que je souhaite incrémenter en vérifiant qu'elles ne sont pas dans ma table.
Par un rst.findfirst "Monchamp" = Me.Monchamp (je cherche dans la table les données du formulaire indépendant)
et ensuite je peux faire un rst.Nomatch = False pour gérer mon message d'erreur.
Mais dans ce cas la je suis obligé de renseigner dans mon code les champs sur lesquels j'ai la clef primaire dans la table.
Je voudrais faire plus propre.
A+
Partager