Jesper TMedlem sedan nov. 20017 144 inlägg 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 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 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 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 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. --
icaaqMedlem sedan okt. 20005 273 inlägg testa att sök på vad betyder ,,128
mvh icaaq
------------------
kolung.....det tål att tänkas på!