webForumDet fria alternativet

Delete funktion...

15 svar · 369 visningar · startad av Dwarfen

DwarfenMedlem sedan jan. 2002241 inlägg
#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

PatrikBMedlem 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

EclipseMedlem 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.

LarsGMedlem 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.

DwarfenMedlem 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...

@ndersMedlem sedan juni 200032 969 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,

DwarfenMedlem 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!

@ndersMedlem sedan juni 200032 969 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,

DwarfenMedlem 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
%>

@ndersMedlem sedan juni 200032 969 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,

doggelitoMedlem 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")
DwarfenMedlem 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?

@ndersMedlem sedan juni 200032 969 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?

DwarfenMedlem 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
%>

@ndersMedlem sedan juni 200032 969 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,

DwarfenMedlem sedan jan. 2002241 inlägg
#16

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

132 ms totalt · 3 externa anrop · v20260731065814-full.30151723
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
130 ms — hämta tråd, inlägg och bilagor (db)