OVH Cloud OVH Cloud

comment récupérer une erreur de syntaxe sql

6 réponses
Avatar
dav
quand je fais une requete sql libre (les utilisateurs saisissent la
requete sql eux memes) il y a des erreurs de syntaxe possibles. dans ce
cas j'ai un message d'erreur et l'application se ferme.
ce que je voudrais c'est proposer aux utilisateurs qui se sont trompés
de pouvoir rectifier leur ligne de code sql....
je pense qu'il faut utiliser on error goto....mais ensuite je ne sais
pas trop comment faire.
merci,
bruno

6 réponses

Avatar
Jean-Marc
"dav" a écrit dans le message de
news:41a765b5$0$31681$
quand je fais une requete sql libre (les utilisateurs saisissent la
requete sql eux memes) il y a des erreurs de syntaxe possibles. dans ce
cas j'ai un message d'erreur et l'application se ferme.
ce que je voudrais c'est proposer aux utilisateurs qui se sont trompés
de pouvoir rectifier leur ligne de code sql....
je pense qu'il faut utiliser on error goto....mais ensuite je ne sais
pas trop comment faire.




Hello,

voici un mini exemple qui montre le mécanisme général de traitement des
erreurs avec On Error Goto:

--------------------------------------------------------
Private Sub Command1_Click()
Dim a As Integer

' si une erreur, on saute au label sql_error
On Error GoTo sql_error

' debut du traitement
' Execute la query SQL
' enlevez le commentaire ci dessous pour simuler une erreur
' de syntaxe SQL
' a = a / 0

MsgBox "Tout c'est bien passé si je suis ici"
fin_normale:
Exit Sub ' on force ici un retour de Sub

' Oops, si on est la, une erreur est survenue
' on peut tester le type d'erreur avec l'obejet Err (voir la doc)
sql_error:
MsgBox "Erreur de synatxe dans la query SQL, corrigez SVP"
Resume fin_normale ' le resume permet d'annuler l'erreur et
' de repartir ou on veut
End Sub
--------------------------------------------------------

Voir la documentation de l'obet Err pour plus de détails.


--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
Illinger Philippe
"dav" wrote in message news:41a765b5$0$31681$
quand je fais une requete sql libre (les utilisateurs saisissent la
requete sql eux memes) il y a des erreurs de syntaxe possibles. dans ce
cas j'ai un message d'erreur et l'application se ferme.
ce que je voudrais c'est proposer aux utilisateurs qui se sont trompés
de pouvoir rectifier leur ligne de code sql....
je pense qu'il faut utiliser on error goto....mais ensuite je ne sais
pas trop comment faire.
merci,
bruno



Quelque chose du genre :


Dim strerror As String, errloop As Error

For Each errloop In Errors
With errloop
strerror = "Erreur n°" & .Number & vbCr & .Description
End With
Next





---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.801 / Virus Database: 544 - Release Date: 24/11/2004
Avatar
dav
oui, ça me donne le nuémro et le code de l'erreur, mais je suis viré de
l'application....
comment empecher d'etre sorti et permettre a l'utilisateur de corriger
son erreur de syntaxe...?
merci,
dav


Illinger Philippe a écrit :

"dav" wrote in message news:41a765b5$0$31681$

quand je fais une requete sql libre (les utilisateurs saisissent la
requete sql eux memes) il y a des erreurs de syntaxe possibles. dans ce
cas j'ai un message d'erreur et l'application se ferme.
ce que je voudrais c'est proposer aux utilisateurs qui se sont trompés
de pouvoir rectifier leur ligne de code sql....
je pense qu'il faut utiliser on error goto....mais ensuite je ne sais
pas trop comment faire.
merci,
bruno




Quelque chose du genre :


Dim strerror As String, errloop As Error

For Each errloop In Errors
With errloop
strerror = "Erreur n°" & .Number & vbCr & .Description
End With
Next





---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.801 / Virus Database: 544 - Release Date: 24/11/2004


Avatar
Jean-Marc
"dav" a écrit dans le message de
news:41a77e09$0$31681$
oui, ça me donne le nuémro et le code de l'erreur, mais je suis viré de
l'application....
comment empecher d'etre sorti et permettre a l'utilisateur de corriger
son erreur de syntaxe...?





voir mon post précédent qui explique tout ça.

--
Jean-marc
"There are only 10 kind of people
those who understand binary and those who don't."
Avatar
dav
désolé Jean Marc mais j'ai essayé ton code, ça n'empêche pas que je sois
sorti de l'appli. j'ai fais exactement comme tu dis, je suis allé voir
dans l'aide, mais ton résume vers une ligne exit sub n'empeche pas
d'etre viré de l'appli.
je voudrais pouvoir retourner vers la string SQL pour la modifier et
relancer le recordset....
merci,
dav


Jean-Marc a écrit :

"dav" a écrit dans le message de
news:41a77e09$0$31681$

oui, ça me donne le nuémro et le code de l'erreur, mais je suis viré de
l'application....
comment empecher d'etre sorti et permettre a l'utilisateur de corriger
son erreur de syntaxe...?






voir mon post précédent qui explique tout ça.



Avatar
YannX
Bnsr,

Comme principe de travail,
il faut "encapsuler" l'appel SQL dans une boucle d'essai
avec Rappel de recorrection de l'erreur :

quelque chose comme :
--------------------------------------------------------
Private Sub Command1_Click()
Dim a As Integer
Dim a_traiter as Boolean
a_traiter = True
' si une erreur, on saute au label sql_error
While a_traiter
' => procédure de saisie SQL$
On Error GoTo sql_error

' debut du traitement
' Execute la query SQL$

On Error Go To 0 ' cela s'est bien passé
a_traiter = False ' on désactive la boucle et on continuera le
traitement

' ............


if ( Not a_traiter ) then goto
_normale -----------------------------> vers fin_normale
' Oops, si on est la, une erreur est survenue
sql_error:
Resume Next
'=> explication de l'erreur

Wend ' on boucle tant que a_traiter
fin_normale:
Exit Sub ' on force la sortie
End Sub
--------------------------------------------------------

Est-ce plus clair ?
@+


"dav" a écrit dans le message de
news:41a7865f$0$785$
désolé Jean Marc mais j'ai essayé ton code, ça n'empêche pas que je sois
sorti de l'appli. j'ai fais exactement comme tu dis, je suis allé voir
dans l'aide, mais ton résume vers une ligne exit sub n'empeche pas
d'etre viré de l'appli.
je voudrais pouvoir retourner vers la string SQL pour la modifier et
relancer le recordset....
merci,
dav


Jean-Marc a écrit :

> "dav" a écrit dans le message de
> news:41a77e09$0$31681$
>
>>oui, ça me donne le nuémro et le code de l'erreur, mais je suis viré de
>>l'application....
>>comment empecher d'etre sorti et permettre a l'utilisateur de corriger
>>son erreur de syntaxe...?
>
>
>
>
> voir mon post précédent qui explique tout ça.
>