Här kommer kanske en dum fråga :) .....jag vet att det beror på rs.Close, men vet inte varför det första alternativet blir som det blir.... Problemet är (tror jag) att du inte kan stänga en rs om du inte har öppnat den, vilket du inte har gjort. Ta bort den raden så borde det funka. Det är väl ändå bäst att du använder det första alternativet, eftersom din conn inte stängs i den andra. I det första exemplet stänger du rs direkt efter att du öppnat det, men inte kontrollerat att det innehåller något. För om recordsetet är tomt dvs inga poster returnerades, så kan men ej göra rs.close(). Tips på hur du skulle kunna göra istället ... Detta är mitt förslag:Varför blir det så här?
Vad är det för skillnad mellan dessa två?
Båda två raderar inlägget men i det första alternativet får jag detta felet:
Feltyp:
ADODB.Recordset (0x800A0E78)
Åtgärden är inte tillåten när objektet är stängt.
Men när jag trycker tillbaka så är inlägget raderat.
<!-- #include file="conn.asp" -->
<%
Response.Buffer = True
Set rs = Server.CreateObject("ADODB.Recordset")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connDatabas
SQL = "DELETE idGastbok FROM tblAnvGastbok WHERE idGastbok=" & Request.Querystring("idGastbok")
Set rs = conn.Execute(SQL)
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
Response.Redirect "loggaIn.asp?mode=minGastbok"
%>
Det andra altarnativet funkar utan problem och jag skickas tillbaka direkt till önskad sida.
<!-- #include file="conn.asp" -->
<%
Response.Buffer = True
Set rs = Server.CreateObject("ADODB.Recordset")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connDatabas
SQL = "DELETE idGastbok FROM tblAnvGastbok WHERE idGastbok=" & Request.Querystring("idGastbok")
Set rs = conn.Execute(SQL)
Response.Redirect "loggaIn.asp?mode=minGastbok"
rs.Close
Set rs = Nothing
conn.Close
Set conn = Nothing
%>
/MagnusSv: Varför blir det så här?
MVH SaraSv: Varför blir det så här?
Anledningen till att ditt andra exempel fungerar är att du redirectar till en annan sida innan du stänger rs. Detta är ej att rekomendera eftersom inget av kodraderna under redirect-raden kommer att köras, och därmed stänger du aldrig connection.
MVH
/LindaSv: Varför blir det så här?
<!-- #include file="conn.asp" -->
<%
Response.Buffer = True
Set rs = Server.CreateObject("ADODB.Recordset")
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connDatabas
SQL = "DELETE idGastbok FROM tblAnvGastbok WHERE idGastbok=" & Request.Querystring("idGastbok")
Set rs = conn.Execute(SQL)
'kontrollera att recordset ej är tomt
if not rs.eof then
rs.Close
end if
Set rs = Nothing
conn.Close
Set conn = Nothing
Response.Redirect "loggaIn.asp?mode=minGastbok"
%>
Fungerar inte detta, så kan du alltid hoppa över rs.Close och bara köra set rs=nothing.
MVH,
/LindaSv: Varför blir det så här?
Vi behöver inget Recordset iom att SQL inte returnerar nån data...
<code>
<!-- #include file="conn.asp" -->
<%
Dim SQL
Dim conn
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open connDatabas
SQL = "DELETE idGastbok FROM tblAnvGastbok WHERE idGastbok=" & Request.Querystring("idGastbok")
Call conn.Execute(SQL)
conn.Close
Set conn = Nothing
Response.Redirect "loggaIn.asp?mode=minGastbok"
%>
</code>