Ja, som ni ser pa rubriken sa ar det sa har felmeddelandet lyder:
Operation is not allowed when the object is closed!
Med denna kod:
[red]
<%
Dim objConn
Dim sql
Dim rs
'### Databaskoppling
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("/horjavel/db/banners.mdb")
If request.querystring("vad") = "" then
sql = "select * from Banners"
set rs = objConn.Execute(sql)
End if
If request.querystring("vad") = "delete" then
sql = "delete from Banners where BannerID = " & request.querystring("id") & ""
set rs = objConn.Execute(sql)
End if
If rs.eof then
response.write "Inga banners i databasen!"
'### ...annars
else
'### Startar en loop tills det ar tomt
Do until rs.Eof
'### Gor sa att det blir 2 olika farger i tabellen
if bgcolor = "#EFEFEF" then
bgcolor = "#FFFFFF"
else
bgcolor = "#EFEFEF"
end if
'### Skriver ut tabell...
response.write "<table bgcolor="""&bgcolor&"""><tr><td>"& rs("BannerURL") &"</td>" &_
"<td><a href=""modda.asp?vad=edit&id="& rs("BannerID") &""">Edit</a></td>" &_
"<td><a href=""modda.asp?vad=delete&id="& rs("BannerID") &""">Delete</a></td></tr></table>"
rs.movenext
loop
End if
rs.close
objConn.close
Set objConn = Nothing
%>
Ser inget fel, eller rattare sagt hittar inget fel, men ar trott ocksa!
Varför skapar du recordset när du gör delete?
Jag vet inte om det hjälper, men jag flyttade på lite kod och, tog bort recordsetet vid delete.
Och: Det är lättare att läsa kod om man använder indentering. Ett tips.
<%
Dim objConn
Dim sql
Dim rs
'### Databaskoppling
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & server.mappath("/horjavel/db/banners.mdb")
If request.querystring("vad") = "" then
sql = "select * from Banners"
set rs = objConn.Execute(sql)
If rs.eof then
response.write "Inga banners i databasen!"
'### ...annars
else
'### Startar en loop tills det ar tomt
Do until rs.Eof
'### Gor sa att det blir 2 olika farger i tabellen
if bgcolor = "#EFEFEF" then
bgcolor = "#FFFFFF"
else
bgcolor = "#EFEFEF"
end if
'### Skriver ut tabell...
response.write "<table bgcolor="""&bgcolor&"""><tr><td>"& rs("BannerURL") &"</td>" &_
"<td><a href=""modda.asp?vad=edit&id="& rs("BannerID") &""">Edit</a></td>" &_
"<td><a href=""modda.asp?vad=delete&id="& rs("BannerID") &""">Delete</a></td></tr></table>"
rs.movenext
loop
End if
rs.close
set rs = Nothing
End if
If request.querystring("vad") = "delete" then
sql = "delete from Banners where BannerID = " & request.querystring("id") & ""
objConn.Execute sql,,128
End if
objConn.close
Set objConn = Nothing
%>
ok. ska testa koden!
Kom pa det ocksa nu nar du sa det, varfor skulle jag skapa recset nar det ar delete? aja, var trott nar jag gjorde det, duger det?
' ett eller annat börjar här, ex loop
' här görs saker i loopen, indenterat ett steg
' å lite mer
' här har vi en if-sats som börjar
' så vi indenterar lite mer
' å en gång till
' här tar if-satsen slut
' här drar vi vidare loopen från början
Du ser att koden blir betydligt mer lättläst med indrag som visar vilka kodblock som utförs ihop.
En sak jag undrat.. när ni intenderar, trycker ni på mellanslag några gånger du eller?
För när jag trycker >>tab<< i mitt Notepad så blir det en enorm intendering.
Det är precis lika galet att använda mellanslag som att använda Notepad att skriva kod i . Det finns mängder av bra gratis editors med färgkodning och ordentliga tabbar.