J'ai récupéré un script sur un site qui permet de modifier un enregistrement dans une base de donnée.
Etant débutant je ne sais pas comment faire ci quelqu'un peut m'aider.
le Script (j'ai laissé les commentaires)
<% id = Request.QueryString("Id") %>
<%Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"SQLQuery "SELECT * FROM Table1 where Id"' & Id & '""
Set RS = OBJdbConnection.Execute(SQLQuery)%>
Préparons ensuite la mise à jour dans la base
<%Action = Left(UCase(Request("Action")),5)
If Action="ENVOY" Then
sql = "update Table1"sql sql & "Set Nom" & Request("Nom") , ","sql sql & "Prenom'" & Request("Prenom") & "',"sql sql & "Age'" & Request("Age") & "' "sql sql & "WHERE Id" & Request("Id")
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"
Set RS1 = OBJdbConnection.Execute(SQL)
End If%>
Pour saisir les données, il ne nous reste plus qu'à récupérer les valeurs actuelles (avant modification) dans un formulaire.
<FORM METHOD="post">
">
Nom
">
Prénom
">
Age
">
</FORM>
Et voici le message d'erreur
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Erreur de syntaxe (opérateur absent) dans l'expression 'Id ='.
Salut !
On dirais qu'il y a 1 petit probleme.
Mais d'abord il faudrait savoir si Id est numérique ou si c'est du texte.
Pour la requete de recherche ("SELECT"):si Id est nombre: SQLQuery "SELECT * FROM Table1 where Id" & Idsi Id est texte: SQLQuery "SELECT * FROM Table1 where Id'" & Id & "'"
Pour la requete mise a jour ("UPDATE"):
si Id est nombre:
sql = "update Table1"sql sql & "Set Nom" & Request("Nom") , ","sql sql & "Prenom'" & Request("Prenom") & "',"sql sql & "Age'" & Request("Age") & "' "sql sql & "WHERE Id" & Request("Id")
Oui, c normal l'erreur,
J'ai pas fais gaffe tout a l'heure mais il y a plusieurs autres erreurs dans ce script.
Le & sert a concatener deux chaines, quand a la virgule, je sais pas pourquoi elle se trouve la elle n'a pas a y etre !
Il faut la remplacer part &.
En plus, le nom ne peut etre que du texte. Quand c'est du numerique tu mets rien mais quand c du texte tu doit mettre le caractere ' pour delimiter donc ta requete doit etre comme ca:
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Erreur de syntaxe (opérateur absent) dans l'expression 'Id ='.
/demoasp4/mod.asp, ligne 5
voici le scipt
<% id = Request.QueryString("Id") %>
<%Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"SQLQuery "SELECT * FROM Table1 where Id" & Id (LIGNE5)
Set RS = OBJdbConnection.Execute(SQLQuery)%>
Si tu peux me donner un dernier coup de main ca serait 8-)
onha
Vous n’avez pas trouvé la réponse que vous recherchez ?
Voila comment je vois ton script.
1) Tu recuperes Id
2) Tu fais une requete select
3) Tu affiches les resultats du select ds un formulaire
4) Tu modifies les donnees dans le formulaire
5) Tu soumet le formulaire et tu execute la requete update.
Le probleme est D'ou recuperes-tu ton Id dans la phase 1 ?
Si tu n'as pas d'autres pages que celle-ci, j'en conclu que ton Id au depart est vide.
Fais un essai en tapant en url:
.../mod.asp?Id=3
3 est un exemple, mets le numero d'un enregistrement existant.
Effectivement je récupére de nul part l'Id. Quand je rajoute .../mod.asp?Id=15
il m'affiche bien mon enregistrement mais quand je clic
sur envoyer il m'affiche :
Microsoft OLE DB Provider for ODBC Drivers erreur '80040e14'
[Microsoft][ODBC Microsoft Access Driver] Erreur de syntaxe dans l'instruction UPDATE.