Remplacer un message d'erreur Access....

Remplacer un message d'erreur Access.... - SQL/NoSQL - Programmation

Marsh Posté le 28-04-2003 à 14:14:47    

Salut :
 
Pour simplifier, voici ma question/probleme :
Je possède une table Inventory  
avec deux champs :
InvID : autonumber
Batch : Text
 
J'ai un formulaire dans lequel j'exécute le code :
 
Dim strSQL As String
strSQL = "INSERT INTO Inventory ( InvID, Batch ) SELECT 1AS Expr1, 'Essai' AS Expr2;"
DoCmd.RunSQL strSQL
 
La première fois, ma table est vide, donc, tout marche bien, et la deuxieme fois que je l'exécute, j'ai une erreur comme quoi Access n'a pas pu ajouter les enregistrement à cause d'une violation de clé, etc...
 
Je voudrais savoir comment je pourrais catcher cette erreur, et mettre à la place un truc du genre MsgBox("Erreur - Impossible d'effectuer l'opération" ), au lieu d'avoir ce message "pas beau".
 
Merci pour vos rpéonses...
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 28-04-2003 à 14:14:47   

Reply

Marsh Posté le 28-04-2003 à 14:19:21    

Tu dois connaitre le code d'erreur rattaché à la violation de clé (je ne l'ai plus en tête. Admettons que ce soit 3000 par exemple).
 
Tu ajoutes alors ceci dans ton code :
 
On Error GoTo Erreur
 
(... traitement normal...)
 
Erreur:
If Err.Number = 3000 Then MsgBox "Erreur - Impossible d'effectuer l'opération"
Err.Clear


Message édité par Harkonnen le 28-04-2003 à 14:20:25

---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2003 à 14:28:20    

Harkonnen a écrit :

Tu dois connaitre le code d'erreur rattaché à la violation de clé (je ne l'ai plus en tête. Admettons que ce soit 3000 par exemple).
 
Tu ajoutes alors ceci dans ton code :
 
On Error GoTo Erreur
 
(... traitement normal...)
 
Erreur:
If Err.Number = 3000 Then MsgBox "Erreur - Impossible d'effectuer l'opération"
Err.Clear


 
Bah justement, si je fais ça, ca ne marche pas, car l'erreur n'a pas l'air de venir de l'applicatif Access, mais de la Base de données elle meme, donc, je n'arrrive pas à la catcher, meme avec un On Error !... Le message Access apparait de toute maniere :( !
 
Sniff...


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 28-04-2003 à 14:32:54    

Euh, avec Access, tu utilises forcément Jet comme moteur de BDD hein ! Et Jet te renvoie toujours un code d'erreur !
A mois que tu n'utilises Access comme Front-End pour lire une autre base via l'attachement de données externes ODBC ? (Oracle par exemple)


---------------
J'ai un string dans l'array (Paris Hilton)
Reply

Marsh Posté le 28-04-2003 à 15:02:36    

Harkonnen a écrit :

Euh, avec Access, tu utilises forcément Jet comme moteur de BDD hein ! Et Jet te renvoie toujours un code d'erreur !
A mois que tu n'utilises Access comme Front-End pour lire une autre base via l'attachement de données externes ODBC ? (Oracle par exemple)


 
Voici exactemnt le code que j'utilise :
 
Private Sub Command0_Click()
On Error GoTo Err_Append
 
Dim strSQL As String
strSQL = "INSERT INTO Inventory ( InvID, Batch ) SELECT 1 AS Expr1, 'Essai' AS Expr2;"
DoCmd.RunSQL strSQL
 
Exit_Append:
    Exit Sub
 
Err_Append:
    MsgBox "C'est une erreur"    Resume Exit_Append
 
End Sub
 
Et le problème est que j'obtiens toujours l'erreur "Access" comme quoi il ne peut pas ajouter les enregistrements...
 
Est ce normal?
 
Merci


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 29-04-2003 à 07:40:59    

salut! J'ai eu le même problème il y a peu de temps mais avec une autre erreur(ca concernant les doublons). Malheureusement, personne n'a pu m'aider! Il semblerait que ce genre d'erreur soit généré par le noyau d'Access lui-même et en ce qui me concerne, je n'ai toujours pas trouvé le moyen de la catcher... Pour finir j'ai du vérifier moi même s'il y avait des douboons dans mes tables pour ensuite faire en sorte qu'Access affiche MON mess d'erreur(tout ca en code VBA)...
 
Il faudrait que qqun qui domine vraiment Access vienne te donner un coup main.... au fait tu bosse dans quelle version d'Access??


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
Reply

Marsh Posté le 29-04-2003 à 08:06:01    

Le code est bon mais vous devriez vérifier les options de runtime (qui par défaut font sauter toutes les erreurs Access à l'écran).
 
En Access 97: Tools/Options/Advanced, il y a un groupe de 3 optionbuttons nommé ErrorTrapping, choisir "Break on unhandled errors" (arrêt sur les erreurs non-gérées).  Par défaut, l'option est Arrêt sur toutes les erreurs.
 
Pour finir, sachez que quelque soit le SGBD qui est vraiment derrière Access, c'est toujours Access qui gère les erreurs, donc vous ;)


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 29-04-2003 à 08:18:49    

ok mais il faudra quand même modifier le code VBA pour qu'il detecte l'erreur et qu'il affiche un mess! :hello:


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
Reply

Marsh Posté le 29-04-2003 à 08:24:41    

ben dans le code de yoyo c'est bon, ya rien à retoucher [:spamafote]


---------------
Whichever format the fan may want to listen is fine with us – vinyl, wax cylinders, shellac, 8-track, iPod, cloud storage, cranial implants – just as long as it’s loud and rockin' (Billy Gibbons, ZZ Top)
Reply

Marsh Posté le 29-04-2003 à 08:32:25    

je confirme mais je parlais plutôt pour le code de base  ;)


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
Reply

Marsh Posté le 29-04-2003 à 08:32:25   

Reply

Marsh Posté le 29-04-2003 à 09:20:41    

kamui36 a écrit :

salut! J'ai eu le même problème il y a peu de temps mais avec une autre erreur(ca concernant les doublons). Malheureusement, personne n'a pu m'aider! Il semblerait que ce genre d'erreur soit généré par le noyau d'Access lui-même et en ce qui me concerne, je n'ai toujours pas trouvé le moyen de la catcher... Pour finir j'ai du vérifier moi même s'il y avait des douboons dans mes tables pour ensuite faire en sorte qu'Access affiche MON mess d'erreur(tout ca en code VBA)...
 
Il faudrait que qqun qui domine vraiment Access vienne te donner un coup main.... au fait tu bosse dans quelle version d'Access??  


 
Ca fait du bien de se sentir moins seul ;)
 
Bon, je vais tester les dires de notre ami drasche...
 
Je reviendrai poster ici !
 
A toute,
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 29-04-2003 à 09:28:58    

drasche a écrit :

ben dans le code de yoyo c'est bon, ya rien à retoucher [:spamafote]


 
J'ai trouvé dans Access XP les options "à modifier", et j'ai tout essayé, mais rien n'y fait, le message Access apparait tout le temps!
 
Alors, j'ai essayé avec le code suivant :
 
On Error GoTo Err_Append
 
DoCmd.SetWarnings False
Dim strSQL As String
strSQL = "INSERT INTO Inventory ( InvID, Batch ) SELECT 1 AS Expr1, 'Essai' AS Expr2;"
DoCmd.RunSQL strSQL
 
DoCmd.SetWarnings True
Exit_Append:
    Exit Sub
 
Err_Append:
    MsgBox Err.Number
    Resume Exit_Append
 
Mais là, rien n'y fait, plus aucun message n'appparait (ce qui est encore pire !!!)
 
Bref, pour le moment, notre problème n'est pas réolu :(
 
Bien entendu, si je trouve la solution, je la fais partager à tous !
 
Merci pour votre aide!
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 29-04-2003 à 09:40:52    

c'est bien ce que je pensais (et c'est ce qui me fait peur d'ailleurs)... :heink:


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
Reply

Marsh Posté le 29-04-2003 à 11:22:41    

kamui36 a écrit :

salut! J'ai eu le même problème il y a peu de temps mais avec une autre erreur(ca concernant les doublons). Malheureusement, personne n'a pu m'aider! Il semblerait que ce genre d'erreur soit généré par le noyau d'Access lui-même et en ce qui me concerne, je n'ai toujours pas trouvé le moyen de la catcher... Pour finir j'ai du vérifier moi même s'il y avait des douboons dans mes tables pour ensuite faire en sorte qu'Access affiche MON mess d'erreur(tout ca en code VBA)...
 
Il faudrait que qqun qui domine vraiment Access vienne te donner un coup main.... au fait tu bosse dans quelle version d'Access??


 
Je bosse à la fois avec 97 et XP! Je possède les versions anglaises des deux...je préfère :)


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 29-04-2003 à 12:39:17    

Yoyo@ a écrit :


 
Je bosse à la fois avec 97 et XP! Je possède les versions anglaises des deux...je préfère :)


 
faut juste faire gaffe... car les solutions que tu trouves sous XP ne sont pas toutes compatibles avec 97 :jap:  
 
bon.. moi j'ai pas la chance de bosser avec XP :cry: mais on fait sans [:spamafote]


---------------
Le bien ou le mal, l'homme ou l'animal, on ne voit jamais l'un sans l'autre
Reply

Marsh Posté le 29-04-2003 à 14:58:00    

kamui36 a écrit :


 
faut juste faire gaffe... car les solutions que tu trouves sous XP ne sont pas toutes compatibles avec 97 :jap:  
 
bon.. moi j'ai pas la chance de bosser avec XP :cry: mais on fait sans [:spamafote]


 
LA plupart du temps, tout est compatible ! J'ai jamais eu de problemes la dessus !  
 
LEs seuls trucs qui me paraissaient pas compatibler entre les deux, ce sont des subtilités, genre un OIpenArgs qui n'existe pas avec les reports sous Access97, ou alors ADO (que je n'utilise pas) ou alors les objets Office... Enfin, rien de bloquant pour moi !
 
Mais... On a toujours pas notre solution !
 
J'ai essayé d'écrire sur le site de Krosoft, mais aps de réponse pour le moment !
 
Up !!!
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Marsh Posté le 29-04-2003 à 23:25:51    

Ca y est, mes amis, j'ai la solution :
 
On Error GoTo Err_Append
 
DoCmd.SetWarnings False
Dim strSQL As String
strSQL = "INSERT INTO Inventory ( InvID, Batch ) SELECT 11254 AS Expr1, 'Essai' AS Expr2;"
 
Dim db As Database
Set db = CurrentDb()
db.Execute strSQL, dbFailOnError
DoCmd.SetWarnings True
 
Exit_Append:
    Exit Sub
 
Err_Append:
    MsgBox "Putain, ca marche!!!"
    Resume Exit_Append
 
 
Ce db.Execute strSQL, dbFailOnError permet de récupérer l'erreur si elle se produit !  
 
Punaise, c'est fou, j'ai du écrire à Microsoft, et ils ont eu du mal à me trouver une réponse...Y en a un qui m'a dit que c'était parce que mon formulaire était lié à ma table (ce qui était faux) et un autre qui m'a sorti un truc hyper ocmpliqué en ADO...
 
Et finalement, le dernier, il m'a sorti la bonne réponse...
 
A tester sous 97, mais a priori, ca devrait marcher...
 
Yoyo*


---------------
It's nice to be important, but it's more important to be nice
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed