Erreur ASP/SQL

Résolu/Fermé
JeepyLeChat Messages postés 59 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 27 février 2012 - 29 avril 2009 à 02:32
JeepyLeChat Messages postés 59 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 27 février 2012 - 3 mai 2009 à 19:24
Bonjour,

J'ai actuellement un problème dans le cadre du développement d'un petit site web HTML/ASP. À un certain moment, afin de procéder à la modification de ma base de donnée MySQL pour un enregistrement précis, j'utilise le code suivant:

<%
Nom_Joueur=request.form("Nom_Joueur")
Prenom_Joueur=request.form("Prenom_Joueur")
Date_Naissance=request.form("Date_Naissance")
Telephone=request.form("Telephone")
Email=request.form("Email")
Chaine="select * from tbl_joueurs"
set Req=Conn.execute(Chaine)
Chaine="UPDATE tbl_joueurs SET Nom_Joueur='"+Nom_Joueur+"',Prenom_Joueur='"+Prenom_Joueur+"',Date_Naissance='"+Date_Naissance+"',Telephone='"+Telephone+"',Email='"+Email+"' where No_Joueur='"+Req(0)+"'"
Conn.execute(Chaine)
response.redirect("Joueurs_Admin.asp")
Conn.close
%>

Et lorsque j'accède à cette partie dans le code, j'obtiens l'erreur suivante:
(...)
Erreur d'exécution Microsoft VBScript error '800a000d'

Type incompatible: '[string: "UPDATE tbl_joueurs S"]'

/Save_Joueur.asp, line 15

J'obtiens un erreur sur cette ligne (voir ci bas), sans que je comprenne pourquoi.
Chaine="UPDATE tbl_joueurs SET Nom_Joueur='"+Nom_Joueur+"',Prenom_Joueur='"+Prenom_Joueur+"',Date_Naissance='"+Date_Naissance+"',Telephone='"+Telephone+"',Email='"+Email+"' where No_Joueur='"+Req(0)
(Notez bien: cette insctruction tient sur une seule ligne dans mon code)

Pourtant, cette même insctruction, ou presque (un INSERTau lieu d'un UPDATE) se trouve ailleurs et je n'obtiens pas cette erreur.

Des idées ou suggestions, quelqu'un?

2 réponses

Bonjour,

J'aurais aimé que tu nous précises quelle est la valeur de Req(0) juste avant l'affectation à Chaine

... et je te propose de couper la ligne qui construit ton update en plusieurs tronçons afin de te faciliter le débogage. Tu aurais pu avoir par exemple :
Chaine="UPDATE tbl_joueurs SET " & _
"Nom_Joueur = '" & Nom_Joueur & "'" & _
", Prenom_Joueur = '" & Prenom_Joueur & "'" & _
", Date_Naissance = '" & Date_Naissance & "'" & _
", Telephone = '" & Telephone & "'" & _
", Email='" & Email & "'" & _
" where No_Joueur = '" & Req(0) & "'"

ou mieux: avec une fonction replace un peu évoluée, c'est certes un chouia plus long, ça ressemble presque à du SQL (avec des apostrophes en plus) mais là ça, devient franchement difficile de se vautrer !
' remplace toutes les occurences de :aParamName par aValue dans aText
function SubstSQLParms(aText, aParamName, aValue)
SubstSQLParms = aText
if trim(aText) <> "" and trim(aParamName) <> "" then _
SubstSQLParms = replace(aText, ":" & aParamName, aValue)
end function

.
.
ca te permet d'avoir

Chaine="UPDATE tbl_joueurs SET " & _
"Nom_Joueur = ':Nom_Joueur', Prenom_Joueur = ':Prenom_Joueur', " & _
"Date_Naissance = ':Date_Naissance', Telephone = ':Telephone', " & _
"Email=':Email' where No_Joueur = ':No_Joueur'"
Chaine = SubstSQLParms(Chaine, "Nom_Joueur", request.form("Nom_Joueur"))
Chaine = SubstSQLParms(Chaine, "Prenom_Joueur", request.form("Prenom_Joueur"))
Chaine = SubstSQLParms(Chaine, "Date_Naissance", request.form("Date_Naissance"))
Chaine = SubstSQLParms(Chaine, "Telephone", request.form("Telephone"))
Chaine = SubstSQLParms(Chaine, "Email", request.form("Email"))
Chaine = SubstSQLParms(Chaine, "No_Joueur", UnNumeroDeJoueurValide)

je te laisse essayer pour voir... garde en tête que ça ne sert qu'à faciliter la lecture & le débogage, rien de plus
1
JeepyLeChat Messages postés 59 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 27 février 2012 1
29 avril 2009 à 03:55
Vrai, vrai, c'est une bonne idée.

Je suis plus habitué à développer des applications C++, alors tomber dans une situation où on ne peut pas débugger pendant l'exécution m'a posé problème.

Dès que je reprends le travail, je vais faire cela, et je reposterai si je n'arrive toujours pas a isoler le problème.

Merci beaucoup, et bonne journée/soirée!

JeepyLeChat
0
JeepyLeChat Messages postés 59 Date d'inscription mercredi 16 janvier 2008 Statut Membre Dernière intervention 27 février 2012 1
3 mai 2009 à 19:24
Je ne sais pas exactement pourquoi, mais séparer mon instruction en plusieurs lignes comme tu me l'avais proposé a réglé le problème. Mon site avance bien, merci de ton aide!

JeepyleChat
0