Avatar billede krel Nybegynder
28. december 2007 - 16:39 Der er 5 kommentarer og
1 løsning

EOF or BOF

Hey derude...
Endnu et lille problem, som jeg håber i derude kan afhjælpe mig med.
Først og fremmest hvad står det egntlig for det der EOF og BOF, jeg ved at man jo bruger det når man laver noget med loop. Men desværre er det bare noget jeg skrive automatisk uden at vide hvorfor <-- det vil jeg gerne lave om på!

Jeg har dette simple udtræk i første omgang uden noget EOF / BOF men hvis jeg nu skriver:
Do while not EOF or BOF
henter den indhold med stadig kommer der en fejl kode...

*script*
<%
Set Conn = Server.CreateObject("ADODB.Connection")
DSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath ("/fpdb/bjrigging.mdb")
Conn.Open DSN
SQL = "select * from links order by id desc"
Set rs = Conn.Execute(SQL)
Do
response.write "<p style='margin-left: 1px; margin-right:1px' align='justify'><i>af "&rs("web")&"</i></p>"
response.write "<p style='margin-left: 1px; margin-right:1px' align='justify'><font style='text-transform: uppercase' color='#f5ca64'><span style='font-size:25px'><b>slet</b></span></font></p>"
rs.movenext
loop
rs.Close
Set rs = Nothing
%>

venlig hilsen
Kristian Nielsen
Avatar billede public2 Nybegynder
28. december 2007 - 16:49 #1
EOF og BOF betyder følgende:

EOF: End Of File
BOF: Beginning Of File

Og bruges til at finde ud af, om der er data i f.eks. databasen...

Hvilken fejl får du når du kører din kode?
Umiddelbart kan jeg i hvert fald se en fejl i din løkke... Du skriver:

Do
Response.write "...

Prøv sådan her:

If Not (rs.BOF Or rs.EOF) Then

Do While Not rs.EOF
Response.Write "...

rs.MoveNext
Loop
Else

Response.Write "Databasen er tom"

End If

rs.Close
Avatar billede softspot Forsker
28. december 2007 - 16:53 #2
Bare fordi du checker om der er noget i den aktuelle række af resultatet, betyder det ikke nødvendigvis at du ikke kan få fejl. Hvis du f.eks. prøver at referere et felt i resultatet som ikke findes, får du også en fejl (bare for at nævne en af mange muligheder). Derfor er du nok nød til at være mere specifik angående hvilken fejl du oplever.

Det er ikke nødvendigt at checke for BOF i "firehose"-resulteter (dvs. resultater hvor man benytter en forwardonly cursor, dem som bla. leveres af Connection.Execute). I disse tilfælde kan man bare nøjes med at checke for EOF. Jeg vil vove den påstand, at check på BOF kun er nødvendigt i 0,01 promille af de databasescenarier du vil have på et website. Typisk er det stærkt frarådeligt at bruge mere avancerede cursortyper på en webserver, da denne form for databasemanipulation er dyr i resurser og derfor bør undgås. Når man alligevel bruger dem (f.eks. til paging), så vil man alligevel typisk kun flytte fremad i resultatet og derfor stadig ikke have brug for BOF.
Avatar billede krel Nybegynder
28. december 2007 - 16:55 #3
Selvfølgelig! tror jeg kan se min fejl?
det er vel fordi jeg bruger "rs" ved conn.execute at der så skal et "rs." for EOF og BOF, eller?

det er ikke sådan når man ser noget og så kun husker det halve ;*)
læg også lige et svar
Avatar billede krel Nybegynder
28. december 2007 - 16:55 #4
^^ piblic2
Avatar billede public2 Nybegynder
28. december 2007 - 17:05 #5
Så det hele kom til at virke?
Avatar billede krel Nybegynder
28. december 2007 - 17:14 #6
ja lige præcis takker for hurtige svar begge to
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester