Jag selecterar ut på vanligt sätt och om den är true så visas ju det jag selectade med om värdet är false så får jag ett eof och bof felmedelande. Ändå så har jag satt min accessdatabas att den inte behöver ha ett värde, varför är det så?
Om det inte värdet finns så ska ju inget hända? Eller?
söksträngen:
sql = "SELECT * FROM persons p,units u ,areas a where p.unit_id ="& unit &" and p.area_id = "& area &" and p.unit_id=u.unit_id and p.area_id=a.area_id;"
set rs = conn.Execute (sql)
och felmeddelandet:
Error Type:
ADODB.Field (0x80020009)
Either BOF or EOF is True, or the current record has been deleted. Requested operation requires a current record.
sql = "SELECT * FROM persons p,units u ,areas a where p.unit_id ="& unit &" and p.area_id = "& area &" and p.unit_id=u.unit_id and p.area_id=a.area_id;"
set rs = conn.Execute (sql)
[b]if not rs.eof then[/b]
do until rs.eof
'gör nåt
rs.movenext
loop
[b]else[/b]
response.write "Inga poster att visa."
[b]end if[/b]
Hm, man måste ju stänga objekt också oavsett om databasen är tom eller ej.
If Rs.EOF Then
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
Response.Write "Det finns inget i databasen än.."
Else
'kör all kod
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
End If
If Rs.EOF Then
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
Response.Write "Det finns inget i databasen än.."
Else
'kör all kod
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
End If
är det inte enklare:
If Rs.EOF Then
Response.Write "Det finns inget i databasen än.."
Else
'kör all kod
End If
Rs.Close : Set Rs = Nothing
Cn.Close : Set Cn = Nothing
Om du tittar på koden så är det egentligen exakt samma, bara det att @nders och min är bakochframvänd, jämfört med din.
Hm, man måste ju stänga objekt också oavsett om databasen är tom eller ej.
Varför göra på det sättet då?
Följande fungerar alldeles utmärkt. Det är när man håller på med multipla response.redirects som man måste tänka så, här skriver vi bara ut datat innan den går ur if-satsen och sen vidare neråt.
sql = "SELECT * FROM persons p,units u ,areas a where p.unit_id ="& unit &" and p.area_id = "& area &" and p.unit_id=u.unit_id and p.area_id=a.area_id;"
set rs = conn.Execute (sql)
if not rs.eof then
do until rs.eof
'gör nåt
rs.movenext
loop
else
response.write "Inga poster att visa."
end if
rs.close
set rs = nothing
conn.close
set conn = nothing
Ytterligare en dum? fråga!
Ni stänger ner
"rs.close
set rs = nothing" men jag undrar om det inte räcker att man stänger conn?:
"conn.close
set conn = nothing"
Inte en dum fråga faktist...
variablen rs är ju öppen ändå.. den sluta inte existera bara för att du stänger conn.. någon annan som kan formulera sig bättre kommer nog svara här :e