Hjälp med Update
Hej
Jag håller på att göra en ändra funktion till min hemsida. Det går bra att hämta upp informationen från databasen och så. Men när det gäller att uppdatera posten får jag problem.
Det är alltså Update frågan jag behöver hjälp med. Vet inte riktigt vad jag gör, men har gjort ett försök som inte fungerar. Koden nedan:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%> <% Set Connect = Server.CreateObject("ADODB.Connection") Connect.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Server.MapPath("kontakter.mdb") %> <html> <head> <title>Ändra kontakt</title> <meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1"> <% strNamn = Request.Form("Namn") strKomitte = Request.Form("Komitte") strBefattning = Request.Form("Befattning") strEposthem = Request.Form("Eposthem") strEpostarb = Request.Form("Epostarb") strTelhem = Request.Form("Telhem") strTelarb = Request.Form("Telarb") strFax = Request.Form("Fax") strMobil = Request.Form("Mobil") %> <% IF Request.QueryString("do") = "change" THEN SQL = "UPDATE kontakter SET Namn = '" & Request.Form("Namn") & "', Komitte = '" & Request.Form("Komitte") & "', Befattning = '" & Request.Form("Befattning") & "', Eposthem = '" & Request.Form("Eposthem") & "', Epostarbete = '" & Request.Form("Epostarbete") & "', Telhem = '" & Request.Form("Telhem") & "', Telarb = '" & Request.Form("Telarb") & "', Fax = '" & Request.Form("Fax") & "', Mobil = '" & Request.Form("Mobil") & "' WHERE ID = " & Request.QueryString("ID")" Connect.Execute(SQL) Response.redirect("visa.asp") END IF %> </head> <body> <form method="post" action="?do=change&nid=<%Response.Write(Request.QueryString("ID"))%>" name="frm" onsubmit="return Validate(this);"> <% SQL = "SELECT * FROM kontakter WHERE ID = " & clng(Request.QueryString("ID")) Set RecSet = Connect.Execute(SQL) IF NOT RecSet.EOF THEN %> <p> Namn: <input value ="<%Response.Write(RecSet("Namn"))%>" type="text" name="Namn"> </p> <p> Komitté: <input value ="<%Response.Write(RecSet("Komitte"))%>" type="text" name="Komitte"> </p> <p> Befattning: <input value ="<%Response.Write(RecSet("Befattning"))%>" type="text" name="Befattning"> </p> <p> E-post hem: <input value ="<%Response.Write(RecSet("Eposthem"))%>" type="text" name="Eposthem"> </p> <p> E-post arbete: <input value ="<%Response.Write(RecSet("Epostarb"))%>" type="text" name="Epostarb"> </p> <p> Telefon hem: <input value ="<%Response.Write(RecSet("Telhem"))%>"type="text" name="Telhem"> </p> <p> Telefon arbete: <input value ="<%Response.Write(RecSet("Telarb"))%>" type="text" name="Telarb"> </p> <p> Fax: <input value ="<%Response.Write(RecSet("Fax"))%>" type="text" name="Fax"> </p> <p> Mobil: <input value ="<%Response.Write(RecSet("Mobil"))%>" type="text" name="Mobil"> </p> <input name="Submit" type="submit" value="Ändra"> <% END IF RecSet.Close Set RecSet = Nothing %> </body> </html>
Jag får då följande fel
Unterminated string constant
på update raden.
Är jag helt ute och cyklar?
Svara
Sv: Hjälp med Update
...Request.QueryString("ID")"
Borde vara
...Request.QueryString("ID")
/Johan
Svara
Sv: Hjälp med Update
Du har en " i slutet av din SQL-variabel, ta bort den.
Så det ser ut så här:
<code>
SQL = "UPDATE kontakter SET Namn = '" & Request.Form("Namn") & "', Komitte = '" & Request.Form("Komitte") & "', Befattning = '" & Request.Form("Befattning") & "', Eposthem = '" & Request.Form("Eposthem") & "', Epostarbete = '" & Request.Form("Epostarbete") & "', Telhem = '" & Request.Form("Telhem") & "', Telarb = '" & Request.Form("Telarb") & "', Fax = '" & Request.Form("Fax") & "', Mobil = '" & Request.Form("Mobil") & "' WHERE ID = " & Request.QueryString("ID")
</code>
Svara
Sv:Hjälp med Update
Okej, mitt lika försök blev tydligen kvar där=) Men nu får jag också ett felmeddelande:
Microsoft JET Database Engine error '80040e14'
Syntax error (missing operator) in query expression 'ID ='.
Innebär det att ID inte innehåller något värde?
Svara
Sv: Hjälp med Update
Hej!
En chansning.
Det saknas en "enkelfnutt" efter likhetstecknet <b>"' WHERE ID = "</b>.
//Håkan
Svara
Sv:Hjälp med Update
Tack, men det var inte rätt den här gången=) Hittade problemet, i formuläret "action" var inte rätt skriven. Men nu har jag fått ett nytt problem.
Microsoft JET Database Engine error '80040e10'
No value given for one or more required parameters.
/upsalasim/kontakter/andra.asp, line 29
och på rad 29 finns: Connect.Execute(SQL)
Vad är det som inte får något värde? Är det ID som tappar sitt? Fast enligt querystring så ser det det rätt ut i adressfältet.
Kan någon hjälpa?
Svara
Sv: Hjälp med Update
Det felet brukar komma om man stavar fel till något namn i SQL-satsen. För att "klistra in i Access" skapar du en ny fråga, växlar till SQL-läge, klistrar in och lägger till ; på slutet. Tryck sedan på utropstecknet i verktygsfältet.
/Johan
Svara
Sv:Hjälp med Update
Tack så mycket för alla hjälp. Då har man lärt sig något nytt om access samt löst problemet.
Fel låg som Johan sa i att det var fel på de fält jag skrivit. I detta fall stod det Telarbete och inte Telarb som det skulle stå.
Tack igen.
Svara