webForumDet fria alternativet

eof eller bof fel?

ASP

13 svar · 309 visningar · startad av clacke

Medlem sedan feb. 2003234 inlägg
Frågan#1

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.
Medlem sedan feb. 200112 078 inlägg
#2
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]
Medlem sedan juni 200032 967 inlägg
#3

Innan du försöker skriva ut något från recordsetet måste du kontrollera att inte recordsetet är tomt.

If not rs.EOF then
 ' Do your thang!
else
 ' Nää, tomt :(
End if

Mvh

Medlem sedan juni 20019 519 inlägg
#4

Varför inte bara skriva

if rs.eof then
'*snyft*
else
'*yey*
end if

???

Medlem sedan feb. 200112 078 inlägg
#5

Du är låångt efter voigtann. :e ;)

Medlem sedan juni 20019 519 inlägg
#6

nej men nu får du förklara :e :(

Medlem sedan feb. 200112 078 inlägg
#7

voigtann1 skrev:

nej men nu får du förklara :e :(

Du får hänga lite mer på F5, om man säger så. ;)

Medlem sedan juni 20019 519 inlägg
#8

nej men ni kör ju "if NOT rs.eof" varför?

Medlem sedan sep. 20026 425 inlägg
#9

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
Medlem sedan juni 20019 519 inlägg
#10
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
Medlem sedan feb. 200112 078 inlägg
#11

voigtann1 skrev:

nej men ni kör ju "if NOT rs.eof" varför?

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
Medlem sedan feb. 2003234 inlägg
#12

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"

Måste man ha med båda?

Medlem sedan juni 20019 519 inlägg
#13

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

Medlem sedan feb. 2003234 inlägg
#14

Tack!

248 ms totalt · 4 externa anrop · v20260731065814-full.1dc6f849
119 ms — deklarationer (db)
0 ms — hämta statistik (cache)
123 ms — hämta tråd, inlägg och bilagor (db)
122 ms — ändringar (db)