webForumDet fria alternativet

Finn fem fel

ASP

13 svar · 197 visningar · startad av Pace

Medlem sedan juni 20019 024 inlägg
Frågan#1

Vad är fel i följande sql-sats (>> "Syntax error in UPDATE statement.")

SQL = "UPDATE Users SET username='" & Request.Form("username") & "', "
SQL = SQL & " password='" & Request.Form("password") & "', "
SQL = SQL & " name='" & Request.Form("name") & "', "
SQL = SQL & " initials='" & Request.Form("initials") & "', "
SQL = SQL & " email='" & Request.Form("email") & "', "
SQL = SQL & " WHERE id=" & id

Jag har liiite svårigheter att hålla reda på alla tecken. Finns det inte program för sånt?

------------------
Peter D

Medlem sedan dec. 200012 464 inlägg
#2
  1. Det skall inte vara något komma innan where

  2. Password är tydligen ett reserverat ord i Access. Du kan antingen döpa om kolumnen eller så ange den som [password]

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#3

Det skall inte vara något komma innan where

Var ska det annars vara? :)

Password är tydligen ett reserverat ord i Access.

Nej, det funkade tidigare, så det är inga problem.

------------------
Peter D

Medlem sedan juni 200032 967 inlägg
#4

Var ska det annars vara?

det ska alltså inte vara ett komma precis innan where.

ta bort det sista kommat före where bara.

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan juni 20019 024 inlägg
#5

Aha, det kommat! (såg jag inte ens... he he)

Fast nu har jag ett annat problem:

The operation requested by the application is not supported by the provider.

Kan man inte köra update på pws eller vadå? :q

------------------
Peter D

Medlem sedan dec. 200012 464 inlägg
#6

Hur ser den kod ut som utför update?

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#7

Precis som ovan LarsG, fast nu med version 2.0 tilläggspaket med uppgradering - dvs utan komma!

SQL = "UPDATE Users SET username='" & Request.Form("username") & "', "
SQL = SQL & " password='" & Request.Form("password") & "', "
SQL = SQL & " name='" & Request.Form("name") & "', "
SQL = SQL & " initials='" & Request.Form("initials") & "', "
SQL = SQL & " email='" & Request.Form("email") & "'"
SQL = SQL & " WHERE id=" & id

------------------
Peter D

Medlem sedan dec. 200012 464 inlägg
#8

Det var inte det jag menade. Det jag tänkte på var de ADO-anrop du gör, dvs execute eller hur det nu ser ut (+ lite kod omkring).

------------------
essentitia preter non sans multiplicandum

Medlem sedan juni 20019 024 inlägg
#9

Okej, my misstake ;)
Här kommer koden:

   databasFil = "login.mdb"
   Set Connect = Server.CreateObject("ADODB.Connection")
   Connect.Open "driver={Microsoft Access Driver (*.mdb)};DBQ=" & Server.Mappath(databasFil)
   Set rs = Server.CreateObject("ADODB.Recordset")

   ...

SQL = "UPDATE Users SET username='" & Request.Form("username") & "', "
SQL = SQL & " password='" & Request.Form("password") & "', "
SQL = SQL & " name='" & Request.Form("name") & "', "
SQL = SQL & " initials='" & Request.Form("initials") & "', "
SQL = SQL & " email='" & Request.Form("email") & "'"
SQL = SQL & " WHERE id=" & id

Connect.Execute(SQL)

rs.Update
rs.Close

%>

------------------
Peter D

Medlem sedan juni 200032 967 inlägg
#10

ta bort nedan fetmarkerade rader, de skall inte vara där:

[b]Set rs = Server.CreateObject("ADODB.Recordset")[/b]
...

SQL = "UPDATE Users SET username='" & Request.Form("username") & "', "
SQL = SQL & " password='" & Request.Form("password") & "', "
SQL = SQL & " name='" & Request.Form("name") & "', "
SQL = SQL & " initials='" & Request.Form("initials") & "', "
SQL = SQL & " email='" & Request.Form("email") & "'"
SQL = SQL & " WHERE id=" & id

Connect.Execute(SQL)

[b]rs.Update
rs.Close[/b]

------------------
<A HREF="http://cartman.nu" TARGET=_blank>
can i borrow your goat?
</A>

Medlem sedan juni 20019 024 inlägg
#11

Tackar!

Så följande

Set rs = Connect.Execute(SQL)

Gör skapar alltså ett recordset utan Set rs = Server.CreateObject("ADODB.Recordset")?

:q

------------------
Peter D

Medlem sedan dec. 200012 464 inlägg
#12

Set rs = Connect.Execute(SQL)

Ja det skapaas ett recordset vars egenskaper man inte kan ändra. Dvs, om man bara vill hämta data är det onödigt att först skapa ett recordset med server.createobjec.

------------------
essentitia preter non sans multiplicandum

Medlem sedan dec. 19998 577 inlägg
#13

Men kör du bara en update så skall du inte köra en set, det är bara när du hämtar data som du behöver skapa ett recordset (antingen via execute eller manuelt skapande av detta), så du behöver bara exekvera såhär:

Connect.Execute(SQL)

------------------
Vide rox = new Vide();
rox.learn("C#");

webeye.nu

Medlem sedan juli 20016 inlägg
#14

Vill Du inte skriva koden själv så kan du testa denna kodgenerator http://www.able-consulting.com/ecodegen/

Har inte hunnit testa den ännu på riktigt men det ser bra ut när koden kommer ut.

273 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
133 ms — deklarationer (db)
0 ms — hämta statistik (cache)
137 ms — hämta tråd, inlägg och bilagor (db)
130 ms — ändringar (db)