Modification d'un élément dans une base de donnée

onha - 24 juil. 2001 à 16:30
 onha - 27 juil. 2001 à 18:20
Bonjour,

Bon voilà, j'ai une base de donnée sous access.

J'ai récupéré un script pour permettre la modification d'un élément dans une base de donnée. Le pb c'est que j'ai un message d'erreur, comme je débute (vous avez compris :))

Voilà le script<% 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)
%>

<%
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
%>

<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 ='.

/demoasp4/mod.asp, ligne 5

Si quelqu'un à une idée

Merci d'avance

6 réponses

salut,

bon le probleme est le suivant
"id" est une valeur que tu récupères d'une page précédente par la méthode "get".

visiblement, tu ne récupère pas cette variable.

Voici ce que je crois :
1 : tu n'a pas pas respecté la casse de ta variable :
'Request.QueryString("id")' ou bien est-ce 'Request.QueryString("Id")'

2 : tu n'a pas utilisé la méthode "get" (ta variable Id doit apparaître dans l'url) mais la méthode "post" donc dans ce cas tu dois utiliser 'request.form("")'

voila j'espère que cela t'aidera
à+
0
Ok tiffou

Merci d'avoir bien voulu répondre à mon message.

A vrai dire je nage.

J'ai modifié le script et ça marche a moitié.

<% id = Request.QueryString("id") %>
<%Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"
SQLQuery = "SELECT * FROM table1 WHERE Id "
Set RS = OBJdbConnection.Execute(SQLQuery)%>
<%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%>
<FORM METHOD="GET">
">
Nom

">
Prénom

">
Age

">

</FORM>

je m'explique

qd j'ouvre le fichier il m'affiche la première donnée de la base, je pense qu'il doit y avoir un lien avec modif que j'ai faite.
SQLQuery = "SELECT * FROM table1 WHERE Id "
comment lui dire que je veux modifier l'Id n° 14

Si tu as une idée. Merci

au sinon quand je modifie l'enregistrement qui m'affiche il mets bien a jour la base. C'est un miracle :)
0
salut,

le probleme pour ton code est le suivant :

lorsque tu arrive la première fois sur ta page
la valeur de ton id = vide et donc ton 1er select ne marchera pas.

tu peux avoir plusieurs méthodes en voici une :

<%
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"

id = trim(Request.QueryString("Id")

SQLQuery = "SELECT * FROM table1 order by id asc "

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)

'ici si tu es dans le cas ENVOYER
SQLQuery = "SELECT * FROM table1 WHERE id=" & id

End If

' la requete se trouve ici
Set RS = OBJdbConnection.Execute(SQLQuery)
%>
<FORM METHOD="GET">
">
Nom

">
Prénom

">
Age

">

</FORM>

voila en gros..

conseil : fais des tests tout de même pour savoir si tu as des enregistrements dans ta base pour éviter des erreurs

allez à+
0
salut,

le probleme pour ton code est le suivant :

lorsque tu arrive la première fois sur ta page
la valeur de ton id = vide et donc ton 1er select ne marchera pas.

tu peux avoir plusieurs méthodes en voici une :

<%
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "mabase"

id = trim(Request.QueryString("Id")

SQLQuery = "SELECT * FROM table1 order by id asc "

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)

'ici si tu es dans le cas ENVOYER
SQLQuery = "SELECT * FROM table1 WHERE id=" & id

End If

' la requete se trouve ici
Set RS = OBJdbConnection.Execute(SQLQuery)
%>
<FORM METHOD="GET">
">
Nom

">
Prénom

">
Age

">

</FORM>

voila en gros..

conseil : fais des tests tout de même pour savoir si tu as des enregistrements dans ta base pour éviter des erreurs

allez à+
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Ok tiffou

Super quand je modifie un élément de la base, la mise à jour apparaît tout de suite. cool

Une dernière petite chose. :shy)

Peux me dire comment faire pour appeler un enregistrement de la base pour modifier un champ.

Exemple

Id Nom Prenom Age
1 TOTO TATA 29
2 TOTO2 TATA2 35
3 TOTO3 TATA3 45

Comment appeler l'Id numéro 2 et modifier dans le script que tu as fait ?

J'espère que tu ma compris.

Dans l'attente. Merci encore 8-)

onha
0
A j'oublié connais tu un bouquin qui pourrait m'aider à faire de la programmation en ASP

Merci

onha
0
Rejoignez-nous