Pace Medlem sedan juni 2001 9 024 inlägg Trådstart 5 juli 2001 18:24 #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?
Pace Medlem sedan juni 2001 9 024 inlägg
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.
@nders Medlem sedan juni 2000 32 967 inlägg
Var ska det annars vara?
det ska alltså inte vara ett komma precis innan where.
ta bort det sista kommat före where bara.
Pace Medlem sedan juni 2001 9 024 inlägg 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å?
L LarsG Medlem sedan dec. 2000 12 464 inlägg Hur ser den kod ut som utför update?
Pace Medlem sedan juni 2001 9 024 inlägg 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
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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).
Pace Medlem sedan juni 2001 9 024 inlägg 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
%>
@nders Medlem sedan juni 2000 32 967 inlägg 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]
Pace Medlem sedan juni 2001 9 024 inlägg Tackar!
Så följande
Set rs = Connect.Execute(SQL)
Gör skapar alltså ett recordset utan Set rs = Server.CreateObject("ADODB.Recordset")?
L LarsG Medlem sedan dec. 2000 12 464 inlägg 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.
Vide Medlem sedan dec. 1999 8 577 inlägg 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)
N no1daag Medlem sedan juli 2001 6 inlägg 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.