webForumDet fria alternativet
Logga in / Bli medlem

Redirect

ASP

6 svar · 197 visningar · startad av Jesper T

Medlem sedan nov. 20017 144 inlägg
Trådstart#1

Hej undrar hur man i detta fall i denna nästan helt problematiska koden kollar om recsett är tomt innan den går på och raderar posten?
Så här har jag skrivit men den raderas även fast det finns foster i rs!!

<%
category = Request.Querystring("category")

Dim ConnectString, conn
ConnectString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("items.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
conn.open ConnectString
SQL = "SELECT ProdNr FROM Items"
rs.Open SQL, Conn

if rs.Eof then
  rs.close
  set rs=nothing
  conn.close
  set conn = nothing
Response.Redirect("admin_kat.asp")
rs.MoveNext

else
end if

set rsdelete = conn.Execute("DELETE * FROM Categories WHERE Category = "& Category)
set rsdelete = conn.Execute("DELETE * FROM Items WHERE Category = "& Category) 
  
  conn.close
  set conn = nothing

Response.Redirect("admin_kat.asp")
%>

Mycket tacksam för svar!

MVH Jesper

Medlem sedan dec. 200012 464 inlägg
#2

Hur menar du? Har du glömt ett inte någonstans?

Varför skall du kontrollera om tabellen är tom? Det är lika bra att göra delete direkt.

<%
category = Request.Querystring("category")
Dim ConnectString, conn
ConnectString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("items.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
conn.open ConnectString

conn.Execute "DELETE * FROM Items WHERE Category = "& Category,rows,128 
if rows <> 0 then
conn.Execute "DELETE * FROM Categories WHERE Category = "& Category,rows,128
end if
conn.close
set conn = nothing

Response.Redirect("admin_kat.asp")
%>

Det är mer portabelt mellan olika dbms att skriva

delete from ..

än

delete * from ...

Det är enbart Access 97 som kräver den senare formen.

Medlem sedan nov. 20017 144 inlägg
#3

Jo det är så här att det är en liten shop jag har och varje post är kopplad till en unik bild, alltså kasettbandet man kan beställa har en bild på framsidan. När jag tar bort posterna, så raderas även bilden, men när jag tar bort kategorin: musik, alltså den med kasettbandet i så fösvinner inte bilden utan bara posten med kasettbandet, och bilden ligger kvar, det är inte bra för då måste stackars webmaster gå in och ta bort bilden manuellt...puhh, jobbigt!

Är det fel tänkt eller?!
MVH

//Jesper T

Medlem sedan nov. 20017 144 inlägg
#4

Ok, nu har jag gjort så här:

<%
category = Request.Querystring("category")

Dim ConnectString, conn
ConnectString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("items.mdb")
Set conn = Server.CreateObject("ADODB.Connection")
Set Rs = Server.CreateObject("ADODB.Recordset")
conn.open ConnectString
SQL = ("SELECT ProductNum FROM Items where category =" &category)
rs.Open SQL, Conn

if rs.eof then
set rsdelete = conn.Execute("DELETE * FROM Categories WHERE Category = "& Category)
set rsdelete = conn.Execute("DELETE * FROM Items WHERE Category ="&Category )
 response.kakor("fel")= "" 
 else
 response.kakor("fel")= "Du måste tömma kategorin ifrån poster innan du tar bort kategorin"
  end if
  conn.close
  set conn = nothing

Response.Redirect("admin_kat.asp")
%>

Jag vet inte om det är optimalt men det verkar funka, en liten mix av Lars G´s och min gamla, lite <%tokroliga%> kod!

MVH Jesper

Medlem sedan mars 20007 896 inlägg
#5

För att optimera den, bör den se ut något så här:

<%
category = Request.Querystring("category")
Dim ConnectString, conn, Rs
ConnectString = "driver={Microsoft Access Driver (*.mdb)};dbq=" & Server.MapPath("items.mdb")
Set conn = Server.CreateObject("ADODB.Connection")

conn.open ConnectString
SQL = ("SELECT ProductNum FROM Items where category =" &category)
set Rs = conn.Execute ( SQL )

if Rs.eof then
conn.Execute("DELETE * FROM Categories WHERE Category = "& Category) ,, 128
conn.Execute("DELETE * FROM Items WHERE Category ="&Category ) ,, 128
response.kakor("fel")= "" 
else
response.kakor("fel")= "Du måste tömma kategorin ifrån poster innan du tar bort kategorin"
end if
Rs.close
conn.close
set Rs = Nothing
set conn = nothing

Response.Redirect("admin_kat.asp")
%>

:)

Medlem sedan nov. 20017 144 inlägg
#6

Tack, men vad betyder:

,,128

????????????????

Medlem sedan okt. 20005 273 inlägg
#7

testa att sök på vad betyder ,,128

mvh icaaq

265 ms totalt · 4 externa anrop · v20260731065814-full.51f67c91
127 ms — deklarationer (db)
0 ms — hämta statistik (cache)
135 ms — hämta tråd, inlägg och bilagor (db)
126 ms — ändringar (db)