ASPNL logo (1 kb)
dinsdag 13 mei 2008




Microsoft MVP

.NET Codewise Community
<< vorige | overzicht

Gegevens op meerdere pagina's

Het komt regelmatig voor dat je een groot aantal records terug krijgt van een query. In dat geval is het vaak een goede oplossing om de gegevens in meerdere pagina's te verdelen, zodat de gebruiker door de gegevens heen kan bladeren. Met de GetRows methode kunnen we aangeven hoeveel records we willen hebben. Verder heeft een recordset (van het type Static of Keyset) de mogelijkheid bij een bepaald record te beginnen. Dit doen we door de eigenschap AbsolutePosition te wijzigen in de positie waar we willen starten. Het onderstaande voorbeeld gebruikt deze methode om gegevens in meerdere pagina's aan te bieden.

pagedgetrows.asp
<%
Option Explicit

'Declareer constante(s)
Const RecordsPerPagina = 10

'Declareer variabele(n)
Dim objConn
Dim objRs
Dim arrRs
Dim strSQL
Dim strPagina
Dim lngVelden
Dim lngRecords
Dim lngAantalRecords
Dim lngAantalPaginas
Dim lngPagina
Dim lngStart
Dim i, j

'SQL statement
strSQL = "SELECT CompanyName, Address, PostalCode, City, Country FROM Customers"

'Haal huidige pagina uit QueryString en bereken startpunt
strPagina = Request.QueryString("pag")
If IsNumeric(strPagina) And strPagina <> "" Then
   lngPagina = CLng(strPagina)
Else
   lngPagina = 1
End If
lngStart = RecordsPerPagina * (lngPagina - 1) + 1

'Open database
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("ConnString")

'Open recordset
Set objRs = Server.CreateObject("ADODB.Recordset")
objRs.Open strSQL, objConn, adOpenStatic, adLockReadOnly

'Vraag totaal aantal records op
lngAantalRecords = objRs.RecordCount

If lngAantalRecords >= lngStart Then
   'Zet startpositie
   objRs.AbsolutePosition = lngStart

   'Zet records in array en tel de velden en records
   arrRs = objRs.GetRows(RecordsPerPagina, adBookmarkCurrent)
   lngVelden = UBound(arrRs)
   lngRecords = UBound(arrRs, 2)
ElseIf lngAantalRecords > 0 Then
   lngRecords = -2
Else
   lngRecords = -1
End If

'Sluit Recordset
objRs.Close
Set objRs = Nothing

'Sluit database
objConn.Close
Set objConn = Nothing
%>
<HTML>
<BODY>
<TABLE BORDER="1">
<%
'Bereken aantal pagina's
lngAantalPaginas = lngAantalRecords \ RecordsPerPagina
If lngAantalRecords Mod RecordsPerPagina > 0 Then
   lngAantalPaginas = lngAantalPaginas + 1
End If

Select Case lngRecords
   Case -1
      Response.Write "Er zijn geen records om weer te geven"
   Case -2
      Response.Write "De opgevraagde pagina bestaat niet"
   Case Else
      'Verwijzing naar vorige pagina weergeven
      If lngPagina > 1 Then
         Response.Write "<a href=""pagedgetrows.asp?pag=" & lngPagina - 1 & """>"
         Response.Write "<< terug</a>&nbsp;&nbsp;"
      End If

      'Aantal pagina's weergeven
      Response.Write "pagina " & lngPagina & " van " & lngAantalPaginas

      'Verwijzing naar volgende pagina weergeven
      If lngPagina < lngAantalPaginas Then
         Response.Write "&nbsp;&nbsp;<a href=""pagedgetrows.asp?pag=" & lngPagina + 1 & """>"
         Response.Write "verder >></a>"
      End If

      'Laat tabel met waardes zien
      For i = 0 To lngRecords
         Response.Write "<TR>"
         For j = 0 To lngVelden
            Response.Write "<TD>" & arrRs(j, i) & "</TD>"
         Next
         Response.Write "</TR>"
      Next
End Select
%>
</TABLE>
</BODY>
</HTML>


<< vorige | ^ naar boven | overzicht
copyright 2000-2007 ASPNL