webForumDet fria alternativet

Redirect

6 svar · 197 visningar · startad av Jesper T

Jesper TMedlem sedan nov. 20017 144 inlägg
#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

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

------------------
essentitia preter non sans multiplicandum

Jesper TMedlem 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

Jesper TMedlem 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

SPiNMedlem 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")
%>

:)

------------------
SPiN, bjorne.w@telia.com

-- Wise men talk because they have something to say; fools, because they have to say something. --

Jesper TMedlem sedan nov. 20017 144 inlägg
#6

Tack, men vad betyder:

,,128

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

icaaqMedlem sedan okt. 20005 273 inlägg
#7

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

mvh icaaq

------------------
kolung.....det tål att tänkas på!

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