Bonjour à tous et merci de votre temps.

J'ai une appli Access qui utilise une base Oracle. J'ai des petits problèmes de performance et lors de mes essais j'ai découvert qu'une requète INSERT était nettement nettement plus performante que le traditionnel '.AddNew'.

Je suis passé de 25s avec le Addnew à moins de 1s avec le INSERT.

Enivré par ce succés, j'ai décidé de remplacer une partie de mes .AddNew par des INSERT et comme je n'aime pas avoir du SQL dans mon code VBA je suis passé par une requète paramétrée.

ex :

Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
 
PARAMETERS prmNumDoc Long;
UPDATE Constat SET Doc.DOCDATEMAJ = Now()
WHERE (((Doc.NUMDoc)=[prmNumDoc]));
et je fais un q.execute dans mon module pour ne pas avoir les messages d'alerte du DoCmd.runSQL.

Ça marche trés bien s'il n'y a pas d'erreur MAIS si j'ai une erreur (ex : clef en double) le q.execute ne remonte pas l'erreur au VBA et je ne peux donc pas alerter l'utilisateur.

J'ai pensé faire un test préalable à l'insertion mais cela fait beaucooup de code à ajouter.

Quelqu'un connait-il un moyen d'intercepté l'erreur dans le module ?

Quelqu'un a une bonne suggestion ?

A+