Avatar billede s0mmer Nybegynder
05. februar 2009 - 14:07 Der er 2 kommentarer

Sidste række i sql

Hej eksperter,

Jeg har en loop som sørger for at køre alle menupunkter ud i en menu, men jeg har brug for at gøre noget ved det sidste menupunkt. Hvad er den nemmeste fremgangsmåde?

Min kode:
    Do While Not rs.EOF
    If showMenu = Cint(rs("mainmenu")) AND showSub = Cint(rs("ID")) Then
        Response.write("<span class='normal'><a href='default.asp?showPage="&rs("mainmenu")&"&showSub="&rs("ID")&"' class='normal'><b>"&rs("name")&"</b></a></span><span class='separator'> | </span>")
    Elseif showMenu = Cint(rs("mainmenu")) Then
        Response.write("<span class='normal'><a href='default.asp?showPage="&rs("mainmenu")&"&showSub="&rs("ID")&"' class='normal'>"&rs("name")&"</a></span><span class='separator'> | </span>")
    End if
    rs.movenext
    Loop
Avatar billede panzer Nybegynder
07. februar 2009 - 12:03 #1
MySQL Database:
Lad os sige at du sortere din sætning sådan:

Select * From `tabel` Where `kriterie` = '1' Order By `ID` Asc

For at finde den sidste record i dette kald kan du bruge denne

Select * From `tabel` Where `kriterie` = '1' Order By `ID` Desc Limit 0,1

Først sortere jeg omvendt end normalt, og med Limit vælger kun den første record. Dermed har du den sidste record i dit kald. Når du har det kan du lave en If Then sætning i din kode og sammenligne ID'erne.

Hvis du bruger Access DB kan du ikke bruge 'Limit' men 'Top 1'
Select Top 1 * From `tabel` Where `kriterie` = '1' Order By `ID` Desc
Avatar billede softspot Forsker
18. februar 2009 - 17:15 #2
Hvis du skal undersøge om en række er resultatets sidste i en løkke, så kan du cache værdierne i lokale variable og udføre din outputgenerering EFTER du har flyttet til næste række i resultatet. Når du gør dette kan du nemlig check om EOF er true og i så fald udføre det der skal ske, hvis det er sidste række og ellers det der skal ske, hvis de ikke er sidste række.

Eksempel:

Do While Not rs.EOF
  dim mainmenu, id, name
  mainmenu = Cint(rs("mainmenu"))
  id = CInt(rs("id"))
  name = rs("name")
  rs.movenext

  if not rs.eof then
    ' Udfør det der skal ske, hvis det IKKE er sidste menupunkt

    If showMenu = mainmenu AND showSub = ID Then
      Response.write("<span class='normal'>")
      Response.write("<a href='default.asp")
      Response.write("?showPage="&mainmenu)
      Response.write("&showSub="&ID&"' ")
      Response.write("class='normal'>")
      Response.write("<b>"&name&"</b></a></span>")
      Response.write("<span class='separator'> | </span>")
    Elseif showMenu = mainmenu Then
      Response.write("<span class='normal'>")
      Response.write("<a href='default.asp")
      Response.write("?showPage="&mainmenu)
      Response.write("&showSub="&ID&"' ")
      Response.write("class='normal'>"&name&"</a></span>")
      Response.write("<span class='separator'> | </span>")
    End if
  else
    ' udfør det der skal ske hvis det ER sidste menupunkt...
    ' ...
  end if

Loop
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
IT-kurser om Microsoft 365, sikkerhed, personlig vækst, udvikling, digital markedsføring, grafisk design, SAP og forretningsanalyse.

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