webForumDet fria alternativet
Logga in / Bli medlem

Delete funktion...

ASP

15 svar · 372 visningar · startad av Dwarfen

Medlem sedan jan. 2002241 inlägg
Trådstart#1

Sitter här och har lite problem med att ta bort poster.
Har använt mej av :
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb"
Set rs = Connection.Execute("SELECT TOP 5 ID, TITEL FROM FILMER ORDER BY DATUM ASC")
%>
<%
Do Until rs.EOF
Response.Write"<a href=../filmer.asp?ID="& rs("ID") & ">"& rs("TITEL") & "</a> <a href=../delete/deleting.asp?DELETE&ID="& rs("ID") &"> Ta bort</a><BR>"

rs.MoveNext
loop
rs.Close
Set rs = Nothing
Connection.Close
Set Connection = Nothing
%>

Med hjälp av andra länken går jag till deleting.asp
som är tänkt att med hjälp av ID nr ta bort den posten, med rätt ID..
Har använt mig av:
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb"

connection.execute sql,,128

If Request.QueryString = "DELETE" Then
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID")

Connection.close
End If
%>

Men jag får ett fel:
Feltyp:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E0C)
Det angavs inte någon kommandotext för kommandoobjektet.
/delete/deleting.asp, line 10

Någon som har en suck om vad som är fel?
Är mycket tacksam för hjälp.
/Dwarfen

Medlem sedan mars 20002 836 inlägg
#2
connection.execute sql,,128 

If Request.QueryString = "DELETE" Then 
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID") 

Connection.close 
End If

bör inte connection.execute .... ligga inne i ifsatsen efter att du sätter variabeln sql .... som det är nu så innehåller variabeln sql ingenting precis som felmeddelandet talar om.

cya,
PatrikB

Medlem sedan juli 20003 825 inlägg
#3

Förutsatt att du möblerar om lite i koden så ser jag två saker direkt.

1. DELETE * FROM ....

2. ... WHERE [ID] = " & CInt(request("ID"))

Tvåan är jag mer osäker på men stjärnan måste du ha.

Medlem sedan dec. 200012 464 inlägg
#4

Det är bara Access 97 som kräver att man har delete *

2 är också överflödig då det är strängar man håller på med, det innebär bara en onödig konvertering.

Medlem sedan jan. 2002241 inlägg
#5

Får fortfarande samma fel...
ingen som har något annat försslag...får det verkligen inte att funka...

Medlem sedan juni 200032 967 inlägg
#6
<% 
Set Connection = Server.CreateObject("ADODB.Connection") 
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb" 

If Request.QueryString = "DELETE" Then 
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID") 

connection.execute SQL,,128 

Connection.close 
End If 
%>

ASP-kod tolkas uppifrån och ner. I din kod försökte du exekvera din DELETE-sats innan du hade skapat den. Variabeln SQL var alltså tom.

Mvh,

Medlem sedan jan. 2002241 inlägg
#7

det funkar fortfarandet inte.
Jag får inga felmedelande, och deleting.asp laddas utanproblem, men posten försvinner inte.

Men tack iallafall @anders!

Medlem sedan juni 200032 967 inlägg
#8

Ah. :)

Att jag inte såg det... ;)

If Request.QueryString[b]("vadförquerystring")[/b] = "DELETE" Then

Du har glömt att ange vilken querystring du vill hämta ifrån, så jag tror att du aldrig kommer in i if-satsen.

Mvh,

Medlem sedan jan. 2002241 inlägg
#9

men...snyft...det funkar inte fortfarnade, min Querystring är ju ID...
så det borde ju bli:
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb"

If Request.QueryString("ID") = "DELETE" Then
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID")

connection.execute SQL,,128

Connection.close
End If
%>

Medlem sedan juni 200032 967 inlägg
#10

Du måste skicka delete någonstans i querystringen för att du ska komma in i if-satsen. Gör du inte det?

Om du inte måste skicka delete, utan bara kör sidan när du ska ta bort någonting, så kan du ta bort if-satsen helt.

<% 
Set Connection = Server.CreateObject("ADODB.Connection") 
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb" 

SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID") 

connection.execute SQL,,128 
Connection.close 
%>

Om Request.Querystring("ID") inte innehåller ett värde så kommer du få ett felmeddelande.

Mvh,

Medlem sedan juni 20003 076 inlägg
#11

inte har du väl ett ID i databasen med värdet DELETE heller?
du skulle kunna lägga till en till querystring som heter tex. action:

If Request.QueryString("action") = "DELETE" Then 
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID")
Medlem sedan jan. 2002241 inlägg
#12

Det funkar fortfarande inte.
Måste jag ändra på första sidan, den jag skickar ID nr i eller vad ska jag göra?

Medlem sedan juni 200032 967 inlägg
#13

Hur ser koden ut nu?
Vilken data skickas (i querystring eller form) från sidan innan?

Hur skickar du datat? Med en länk? Hur ser länken ut?

Medlem sedan jan. 2002241 inlägg
#14

Koden:
Delete.asp:
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb"
Set rs = Connection.Execute("SELECT *, TITEL FROM FILMER ORDER BY DATUM ASC")
%>
<%
Do Until rs.EOF
Response.Write"<a href=../filmer.asp?ID="& rs("ID") & ">"& rs("TITEL") & "</a> <a href=../delete/deleting.asp?DELETE&ID="& rs("ID") &"> Ta bort</a><BR>"

rs.MoveNext
loop
rs.Close
Set rs = Nothing
Connection.Close
Set Connection = Nothing
%>

Deleting.asp:
<%
Set Connection = Server.CreateObject("ADODB.Connection")
Connection.Open "Driver={Microsoft Access Driver (*.mdb)};dbq=c:\alternativ\databaser\allt.mdb"

If Request.QueryString("action") = "DELETE" Then
SQL = "DELETE FROM FILMER Where ID=" & Request.QueryString("ID")

connection.execute SQL,,128

Connection.close
End If
%>

Medlem sedan juni 200032 967 inlägg
#15

Om du ska ha en ifsats som kontrollerar action i querystringen mot DELETE, så måste du skicka med det i länken också.

Response.Write"<a href=../filmer.asp?ID="& rs("ID") & ">"& rs("TITEL") & "</a> <a href=../delete/deleting.asp?[b]action=[/b]DELETE&ID="& rs("ID") &"> Ta bort</a><BR>"

Mvh,

Medlem sedan jan. 2002241 inlägg
#16

Tackar så mycket för hjälpen, nu funkar det perfekt!
Tackar så mycket!

384 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
125 ms — deklarationer (db)
124 ms — hämta statistik (db)
132 ms — hämta tråd, inlägg och bilagor (db)
119 ms — ändringar (db)