Källkoden för /anders.enges/asp/db3.asp
<!--  #include file="../inc/navstuff.asp" -->

<!-- 
    Denna rad inkuderar en fil som innehåller min strConn konstant
    Se kapitlet "Enkel Listning" för dess innehåll
-->

<!--  #include file="../inc/connection.asp" -->

Nedan finns ett exempel på bläddring i en databas ett antal rader åt gången:<p>

<!--
    Nedan kommer texterna som sätts på knapparna. Ändra INTE i själva knappen
    utan ändra här om du vill ha en annan text.

    Konstanternas betydelse:
     nav_FIRST - Texten som kommer på en knapp som går till FÖRSTA sidan
     nav_LAST - Texten som kommer på en knapp som går till SISTA sidan
     nav_PREVIOUS - Texten som kommer på en knapp som går till FÖREGÅENDE sida
     nav_NEXT - Texten som kommer på en knapp som går till NÄSTA sida

    Dessutom finns här:
     nav_METHOD - GET eller POST beroende på hur du vill att datat skall sändas
     nav_ROWCOUNT - hur många rader som skall visas per sida
     nav_SQL - den SQL SELECT sats som ger resultattabellen som skall listas
-->

<%
  Const nav_FIRST = " <<    "
  Const nav_LAST = " >> "
  Const nav_PREVIOUS = " <    "
  Const nav_NEXT = " > "
  Const nav_METHOD = "GET"
  Const nav_ROWCOUNT = 4
  Const nav_SQL = "SELECT * FROM EXEMPELDATA ORDER BY aTEXT"
%>


<!-- 
    Nedanstående kodblock skall du INTE ändra på. Fungerar med ALLA tabeller
    förutsatt att du ändrar på SELECT statsen ovan
-->


<!--  GENERELL KOD FÖR BLÄDDRING -->
<!--  Skulle gå att sätta i en skild fil som inkluderas vid behov -->
<%
  nav_PreviousPage = Request("PREV_PAGE")
  Set nav_Conn = Server.CreateObject("ADODB.Connection")
  nav_Conn.Open strConn
  Set nav_RS = Server.CreateObject("ADODB.RecordSet")
  nav_RS.Open nav_SQL, nav_Conn, 1, 1
  nav_RS.PageSize = nav_ROWCOUNT
  nav_MAX = nav_RS.PageCount
  if Request("SCROLL") <> "" Then
      Select Case Request("SCROLL")
           Case nav_PREVIOUS
                nav_PAGENO = nav_PreviousPage - 1
           Case nav_NEXT
                nav_PAGENO = nav_PreviousPage + 1
           Case nav_FIRST
                nav_PAGENO = 1
           Case nav_LAST
                nav_PAGENO = nav_MAX
      End Select
      if nav_PAGENO <  1 Then
           nav_PAGENO = 1
      end if
      if nav_PAGENO > nav_MAX Then
           nav_PAGENO = nav_MAX
      end if
  else
      ' första gången till sidan - ta fram rad ett
      nav_PAGENO = 1
  end if
  nav_ROW = (nav_PAGENO - 1) * nav_ROWCOUNT + 1
  ' Stöder databasen bookmark? (Access och SQL Server borde göra detta)
  harBookmark= nav_RS.Supports(8192)
  If harBookmark Then
      nav_RS.AbsolutePage = nav_PAGENO
  Else
      ' Annars måste vi köra en klumpigare metod
      nav_RS.MoveFirst
      nav_RS.Move nav_PAGENO - 1
  End If
%>

<!--  GENERELL KOD FÖR BLÄDDRING TOG SLUT -->

<!-- 
    Nedanstående form kan du modifiera på följande sätt:
    Om du inte vill ha en "gå till första knapp" tar du bort HELA raden
    som skapar denna knapp. man kan även ta bort
    andra knappar genom att ta bort deras <INPUT... rader
    Du kan även flytta HELA formen till den punkt som
    utmärks av kommentaren
    DU KAN ÄVEN SÄTTA NAVIGATIONSFORMEN I SIN HELHET PÅ DENNA PLATS

    Rör inte HIDDEN fältet men namnet PREV_PAGE .
    Den MÅSTE finnas i formen
-->


<!--  NAVIGATIONS FORMEN BÖRJAR -->
  <FORM METHOD="<%  =nav_METHOD %>">
  <!--  Knappen som går till första sidan -->
      <INPUT TYPE="SUBMIT" NAME="SCROLL" VALUE="<%  =nav_FIRST %>">
  <!--  Knappen som går till föregående sida -->
      <INPUT TYPE="SUBMIT" NAME="SCROLL" VALUE="<%  =nav_PREVIOUS %>">
  <!--  Knappen som går till nästa sida -->
      <INPUT TYPE="SUBMIT" NAME="SCROLL" VALUE="<%  =nav_NEXT %>">
  <!--  Knappen som går till sista sidan -->
      <INPUT TYPE="SUBMIT" NAME="SCROLL" VALUE="<%  =nav_LAST %>">
  <!--  DEN FÖLJANDE RADEN MÅSTE VARA KVAR -->
      <INPUT TYPE="HIDDEN" NAME="PREV_PAGE" VALUE="<%  =nav_PAGENO %>">
  </FORM>
<!--  NAVIGATIONS FORMEN TOG SLUT -->

<!-- 
    Vi har tillgång till variablerna:
      nav_PAGENO - säger vilken sida vi är på
      nav_MAX - säger vilken sida som är den sista
      nav_RS - det recordset som ger tabellens innehåll
      nav_ROW - tabellrad för den första visade raden
-->


<!-- 
    Följande rad sätter in nav_PAGENO och nav_MAX innan vi
    börjar listningen.
-->


Sidan <%  =nav_PAGENO %>  av <%  =nav_MAX %><br>

<!--  Vi skapar en tabell att sätta data i -->
  <table border=0 cellspacing="0" cellpadding="5" width="400">

<!--  Nedanstående två rader skall du inte ändra -->
<%  
  raden = 0
  Do While Not nav_RS.EOF And raden <  nav_ROWCOUNT
%>


<!-- 
    Här börjar en tabellrad. Kommer att upprepas
    Se nav_rowColor funktionen längre ner på sidan
    för förklaring till denn asp kod
-->
 
           <tr bgcolor="<%  =nav_rowColor %>">
                <!--  Först en cell med en radnummer -->
                <td align="right">
                     <%  =nav_ROW + raden %>
                </td>
                <!--  och sedan innehållet i ett fält med namnet TEXT -->
                <td>
                     <%  =nav_RS("aTEXT") %>
                </td>
           </tr>
<!--  Tabellraden tog slut -->

<!--  Ändra inte nedanstående rader -->
<% 
      raden = raden + 1
      nav_RS.MoveNext
  Loop
%>

</TABLE>
<!--  tabelllistningen tog slut -->

<!--  DU KAN ÄVEN SÄTTA NAVIGATIONSFORMEN I SIN HELHET PÅ DENNA PLATS -->

<!--  Vi måste stänga våra objekt -->
<%
  nav_RS.Close
  nav_Conn.Close
  Set nav_RS = nothing
  Set nav_Conn = nothing
%>

<!--  Nu är de stängda och frigjorda -->

<!-- 
    Nedanstående funktion används för att byta färg på tabellraderna .
    Den första raden sätts till #FFFFCC
    den andra till #CCFFFF
    sedan upprepas dessa färgväxlingar
-->

<%
  Dim nav_ColorSwitcher
  Function nav_rowColor()
      if nav_ColorSwitcher Then
           nav_rowColor = "#CCFFFF"
      Else
           nav_rowColor = "#FFFFCC"
      End If
      nav_ColorSwitcher = Not nav_ColorSwitcher
  End Function
%>



<hr>
Koden är kanske inte optimal ur prestandasynvinkel, utan jag har försökt
göra en kod som enkelt går att modifiera för sina egna behov<p>
För att inte beföva skriva samma sak två gånger så har jag
kommenterat koden.<br>
Klicka på "Visa ASP koden för denna sida" länken nedan för förklaringar<p>

<!--  den följande raden inkluderar min standard footer -->
<!--#include file="../inc/footer.asp" -->