Avatar billede Slettet bruger
07. oktober 2008 - 23:55 Der er 10 kommentarer og
1 løsning

objRS.EOF virker ikke

Hej alle eksperter


Hvorfor virker følgende kode ikke?

  If Not objRS.EOF Then
  Response.Write " tekst "
  End If

hvor teksten fx kunne være et link, der skulle pege mod næste datasæt i MySQL-databasen. Hvis der ikke er flere datasæt derefter, skal der selvfølgelig ikke laves et link.
I det tilfælde skal If-proceduren altså sørge for, at springe linjen over, men det gør den ikke i mine forsøg. Hvorfor?

Jeg har bygget det op i samme stil som:
  Loop While Not objRS.EOF

som virker!

Nogen der har idéer?


  // Steeven
Avatar billede Slettet bruger
08. oktober 2008 - 00:38 #1
tjae... prøv at vise hele koden...

eller prøv med:

<%
if objRS.EOF=False then
response.write " tekst"
end if

%>

\Dan
Avatar billede Slettet bruger
08. oktober 2008 - 09:50 #2
objRS.EOF=False giver samme resultat.

Du får ikke hele koden, den er lidt for stor og uoverskuelig, men her har du et større udsnit:

  Response.Write("<tr><td width='45%' align='center'><br />")

    If objRS("x") <> "1" Then
    Response.Write "<a href='01_spec.asp?id=" & objRS("x")-1 & "' title='Previous item'><i>&lt; Previous</i></a>"
        If Not objRS.EOF Then
            Response.Write " | <a href='01_spec.asp?id=" & objRS("x")+1 & "' title='Next item'><i>Next &gt;</i></a>"
        End If
    Else
    Response.Write("<a href='01_spec.asp?id=" & objRS("x")+1 & "' title='Next item' alt='Next item'><i>Next &gt;</i></a>")
    End If
  Response.Write("<br /><br />")


x'et i koden er id'en for hver enhed i én kategori, nemlig blot et tal.

Du kan se resultatet på: http://www.motorsamling.com/kategorier/01_diesel_tractors/01_spec.asp?id=4
Der er fire enheder i denne kategori, og dem skal man kunne klikke frem og tilbage imellem ved Previous- og Next-knapperne over billedet. Det virker som det skal, lige pånær at nr. 4 også har en Next-knap, selvom den er den sidste i rækken.

Der sker altså det, at kodelinjen:
Response.Write " | <a href='01_spec.asp?id=" & objRS("x")+1 & "' title='Next item'><i>Next &gt;</i></a>"
udføres, selvom vi er ved nr. 4 (som er EOF). Linjen udføres dog ikke ved nr. 1 ...?

  // Steeven
Avatar billede keysersoze Guru
08. oktober 2008 - 16:59 #3
hvis du i din linie 2 - altså

If objRS("x") <> "1" Then

kan forespørge på dit recordset vil det heller ikke i linie 4 kunne være eof, det kan det kun være hvis recordsettet virkelig er tomt (og så vil det fejle i linie 2) eller hvis du laver en movenext inden linie 4.
Avatar billede Slettet bruger
08. oktober 2008 - 19:32 #4
Men er objRS.EOF da ikke den sidste datastreng i databasetabellen?

Jeg troede, at objRS.EOF angav den sidste, dvs. nr. 4. Ligesom objRS.BOF ville angive den første, nemlig nr. 1. Altså, når der er fire datastrenge, så ville det være følgende:

nr. 1 = BOF
nr. 2
nr. 3
nr. 4 = EOF


Så når jeg spørger:

  If Not objRS.EOF Then

så troede jeg, at det betød: "Hvis dette ikke er den sidste (altså nr. 4), så ..."

Og dermed troede jeg at man på den måde kunne sige: "Hvis dette ikke er den sidste datastreng, så lav et link til den næste"
Hvor har jeg misforstået noget?


  // Steeven
Avatar billede erikjacobsen Ekspert
08. oktober 2008 - 19:34 #5
Nej, hvis du har 4 poster, får du objRS.EOF til true, når du står ved "den 5.te", altså har sagt movenext på den 4. (tilsvarende BOF på "nr. 0")
Avatar billede Slettet bruger
08. oktober 2008 - 20:31 #6
Okay... tak for den oplysning. Det vidste jeg ikke.

Men hvordan kan jeg så klare problemet?
Hvordan siger jeg: "If Not [sidste datastreng] Then [skriv link til næste side]"? Så Next-knappen indsættes på alle sider pånær den sidste.

  // Steeven
Avatar billede erikjacobsen Ekspert
08. oktober 2008 - 20:37 #7
Nu er gammeldags ASP jo noget hø, ret beset. I et fornuftig programmeringssprog, hvor database og præsentation ville være adskilte, ville jeg have data læst ind i et array, og dermed vide om man stod ved første eller sidste.

Måske indeholder rs.recordcount et antal, som du så kan bruge til at tælle om du er ved den sidste eller ej.
Avatar billede Slettet bruger
11. oktober 2008 - 14:32 #8
Tak for hjælpen.

erikjacobsen må godt lægge et svar.

  // Steeven
Avatar billede erikjacobsen Ekspert
11. oktober 2008 - 15:56 #9
Jeg samler slet ikke på point, tak.
Avatar billede Slettet bruger
11. oktober 2008 - 16:58 #10
Hvorfor ikke?
Avatar billede erikjacobsen Ekspert
11. oktober 2008 - 18:16 #11
Lang historie ... en anden gang ;)
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