webForumDet fria alternativet

Ändra i db

ASP

5 svar · 388 visningar · startad av Agneus

Medlem sedan dec. 200346 inlägg
Frågan#1

1. Filen bokn_form_hjarter.asp listar en vald post från en Access db. Här ska man kunna skriva in eller redigera befintliga uppgifter i posten.
2. Ändringarna skickas vidare till update_hjarter.asp som uppdaterar databasen och redirectar till admin._hjarter.asp som listar hela databasen.

När jag ändrat uppgifterna i (1) bokn_form_hjarter.asp och trycker på knappen "Boka" får jag felmeddelandet: Sidan kan inte visas, HTTP 500 - Internt serverfel Internet Explorer. Inget är heller skrivet till db.
Vad gör jag för fel?

bokn_form_hjarter.asp

<%@Language=VBScript %>
<%option explicit%>
<%
	sub DelID(ID)
	   InputBox ID
	end sub
%>
<%
	'Tar emot vecka från admin_hjarter.asp
	 Dim vecka	
	 vecka = Request.QueryString("vecka")
%>
<%
	Dim path
	path = Server.MapPath("/db/boka.mdb")
	
	Dim Conn 
	Set Conn=server.createobject("adodb.connection")
	Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

	Dim strSQL
	strSQL = "SELECT vecka,namn,tel,mail,status FROM tab_hjarter WHERE vecka = " & vecka
	Dim rs
	Set rs = Conn.Execute(strSQL)
%>

<html>
<head>
</head>

<body>

<h1>Bokning Hjärter</h1>
    
<form method="POST" action="update_hjarter.asp">
<table border="0" cellspacing="0" width="100%">
  <tr>
    <td width="75%" colspan="3"><b>Vecka</b><br>
    <input type="text" name="vecka" size="3" value="<% =rs("vecka") %>"><br>
    </td>
    <td width="25%">
    <input type="submit" value="Boka" name="Change">
    </td>
    </tr>
    <tr>
    <td width="25%"><b>Namn</b>:<br>
    <input type="text" name="namn" size="23" value="<%=rs("namn")%>">
    </td>
    <td width="25%"><b>Telefon</b>:<br>
    <input type="text" name="tel" size="20" value="<%=rs("tel")%>">
    </td>
    <td width="25%"><b>E-post</b>:<br>
    <input type="text" name="mail" size="23" value="<%=rs("mail")%>">
    </td>
    <td width="25%"><b>Status</b>:<br>
    <input type="text" name="status" size="10" value="<%=rs("status")%>">
    </td>
  </tr>
</table>
</form>
<%
	Conn.Close
	Set Conn = Nothing
%>
</body>
</html>

update_hjarter.asp

<% Option Explicit %>
<%Response.Buffer = true%>

<%
	sub DelID(ID)
	   InputBox ID
	end sub
%>

<%
Dim vecka
Dim namn
Dim tel
Dim mail
Dim status

vecka = Request.Form("vecka")
namn = Request.Form("namn")
tel = Request.Form("tel")
mail = Request.Form("mail")
status = Request.Form("status")

Dim path
path = Server.MapPath("/db/boka.mdb")

Dim Conn
Set Conn=server.createobject("adodb.connection")
Conn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & path

dim strSQL
strSQL = "UPDATE tab_hjarter SET "&_
"vecka = '" & vecka & "', "&_
"namn = '" & namn & "', "&_
"tel = '" & tel & "', "&_
"mail = '" & mail & "', "&_
"status = '" & status & "', "&_
"WHERE vecka=" & Request.Form("vecka")

Dim rs
Set rs = Conn.Execute(strSQL)

Response.Redirect("admin_hjarter.asp")
%>
Medlem sedan juni 200032 967 inlägg
#2

Sidan kan inte visas, HTTP 500 - Internt serverfel Internet Explorer.

Till att börja med, avmarkera "Egna http-felmeddelanden" (eller vad det nu heter) i inställningarna i IE, så du får ett riktigt felmeddelande. Posta sedan detta här.

Har man problem med SQL-frågor som inte gör vad de ska, skriv ut frågan med Response.write istället för att exekvera den, så är det lättare att felsöka.

Medlem sedan dec. 200346 inlägg
#3

Slarvfel av mig.

Microsoft VBScript compilation error '800a0400'
Expected statement
/Bokn/update_hjarter.asp, line 3
Option Explicit
^

Här är det tydligen något som inte är rätt...

Microsoft JET Database Engine error '80040e14'
Syntax error in UPDATE statement.
/Bokn/update_hjarter.asp, line 42

Medlem sedan apr. 20031 660 inlägg
#4

HEJ!

Vad blir den utskriva sql:en?
Är verkligen vecka inte ett tal i databasen?

(Koden för sub DelID verkar inte användas.)

Medlem sedan dec. 200346 inlägg
#5

Hittade felet:

"status = '" & status & "', "&_ Det här kommat ska inte vara här
"WHERE vecka=" & Request.Form("vecka")

Efter att kommat togs bort, fungerar all klockrent.

Medlem sedan juni 200032 967 inlägg
#6

Då har du lärt dig till nästa gång du får problem med en SQL-fråga, att skriva ut den istället för att exekvera den? Allt för enklare felsökning!

274 ms totalt · 4 externa anrop · v20260731065814-full.a51de22e
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
141 ms — hämta tråd, inlägg och bilagor (db)
131 ms — ändringar (db)