OVH Cloud OVH Cloud

[ADO] - Comment faire afficher les messages d'erreurs SQL.

3 réponses
Avatar
Teddy
Bonjour à tous,

Je voudrais faire afficher la vraie raison d'un échec en écriture sur une table à laquelle mon
programme est connecté via ADO.

Si je teste Err.Number et Err.Description, j'ai un message peu explicite lorsque je tente d'écrire
par exemple une date en '01/01/2005' dans un champ où la date doit être < '01/01/2004' (contrainte
ou règle d'intégrité référentielle sur ce champ).

Je voudrais que s'affiche la contrainte ou la règle d'intégrité beaucoup plus parlante pour un
utilisateur du programme qui effectue la saisie que le message renvoyé par ADO et récupéré par
Err.Number et Err.Description.

Auriez-vous des idées ou bien est-ce sans solution ?

Ted

3 réponses

Avatar
Jean-Marc
" Teddy" a écrit dans le message de
news:%
Bonjour à tous,

Je voudrais faire afficher la vraie raison d'un échec en écriture sur une


table à laquelle mon
programme est connecté via ADO.

Si je teste Err.Number et Err.Description, j'ai un message peu explicite


lorsque je tente d'écrire
par exemple une date en '01/01/2005' dans un champ où la date doit être <


'01/01/2004' (contrainte
ou règle d'intégrité référentielle sur ce champ).

Je voudrais que s'affiche la contrainte ou la règle d'intégrité beaucoup


plus parlante pour un
utilisateur du programme qui effectue la saisie que le message renvoyé par


ADO et récupéré par
Err.Number et Err.Description.

Auriez-vous des idées ou bien est-ce sans solution ?



Hello,

Curieux ton problème. Quand je fais comme dans ton exemple, si je
rentre une date non conforme à ma règle, je récupère ceci dans
err.Description:

"Une ou plusieurs valeurs sont interdites par la règle de validation
'<#1/1/2004#' déterminée pour 'Table1.date'. Saisissez une valeur que
l'expression acceptera pour ce champ."

Tu n'obtiens pas un message comme celui-ci ? Peux tu nous dire ce que tu
reçois comme message?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
Gloops
Bonjour,

Certaines plateformes associent un message d'erreur à la contrainte
d'intégrité, à savoir que si la date n'est pas dans la fourchette,
plutôt que d'avoir un truc du style "erreur liée à l'objet ou à
l'application", apparaît le message qu'on a saisi dans la propriété
voulue, à savoir "la date doit être comprise entre 01/01/1980 et
01/01/2004", ce qui a une petite touche un chouïa plus claire.

Lorsque ce n'est pas le cas, on a aussi la solution de renoncer à
utiliser la contrainte d'intégrité, et se la programmer soi-même dans
l'interface. Tant que l'utilisateur saisit une date hors fourchette on
lui met le couteau sous la ... euh pardon, on le rappelle à l'ordre,
sous la forme voulue. Une fois que la date est correcte, hop, plus de
commentaire, on l'inscrit dans la table lors de la validation.

Bien entendu c'est lourdingue, mais j'ai déjà vu faire, et ça marche.
____________________________________
Teddy a écrit, le 08/02/2005 20:18 :

Bonjour à tous,

Je voudrais faire afficher la vraie raison d'un échec en écriture sur une table à laquelle mon
programme est connecté via ADO.

Si je teste Err.Number et Err.Description, j'ai un message peu explicite lorsque je tente d'écrire
par exemple une date en '01/01/2005' dans un champ où la date doit être < '01/01/2004' (contrainte
ou règle d'intégrité référentielle sur ce champ).

Je voudrais que s'affiche la contrainte ou la règle d'intégrité beaucoup plus parlante pour un
utilisateur du programme qui effectue la saisie que le message renvoyé par ADO et récupéré par
Err.Number et Err.Description.

Auriez-vous des idées ou bien est-ce sans solution ?

Ted





Avatar
Teddy
Je vais essayer avec MySQL et SQL Server.


"Jean-Marc" a écrit dans le message de news:
42091f4c$0$22465$
" Teddy" a écrit dans le message de
news:%
Bonjour à tous,

Je voudrais faire afficher la vraie raison d'un échec en écriture sur une


table à laquelle mon
programme est connecté via ADO.

Si je teste Err.Number et Err.Description, j'ai un message peu explicite


lorsque je tente d'écrire
par exemple une date en '01/01/2005' dans un champ où la date doit être <


'01/01/2004' (contrainte
ou règle d'intégrité référentielle sur ce champ).

Je voudrais que s'affiche la contrainte ou la règle d'intégrité beaucoup


plus parlante pour un
utilisateur du programme qui effectue la saisie que le message renvoyé par


ADO et récupéré par
Err.Number et Err.Description.

Auriez-vous des idées ou bien est-ce sans solution ?



Hello,

Curieux ton problème. Quand je fais comme dans ton exemple, si je
rentre une date non conforme à ma règle, je récupère ceci dans
err.Description:

"Une ou plusieurs valeurs sont interdites par la règle de validation
'<#1/1/2004#' déterminée pour 'Table1.date'. Saisissez une valeur que
l'expression acceptera pour ce champ."

Tu n'obtiens pas un message comme celui-ci ? Peux tu nous dire ce que tu
reçois comme message?

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."