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
Const RecordsPerPagina = 10
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
strSQL = "SELECT CompanyName, Address, PostalCode, City, Country FROM Customers"
strPagina = Request.QueryString("pag")
If IsNumeric(strPagina) And strPagina <> "" Then
lngPagina = CLng(strPagina)
Else
lngPagina = 1
End If
lngStart = RecordsPerPagina * (lngPagina - 1) + 1
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open Application("ConnString")
Set objRs = Server.CreateObject("ADODB.Recordset")
objRs.Open strSQL, objConn, adOpenStatic, adLockReadOnly
lngAantalRecords = objRs.RecordCount
If lngAantalRecords >= lngStart Then
objRs.AbsolutePosition = lngStart
arrRs = objRs.GetRows(RecordsPerPagina, adBookmarkCurrent)
lngVelden = UBound(arrRs)
lngRecords = UBound(arrRs, 2)
ElseIf lngAantalRecords > 0 Then
lngRecords = -2
Else
lngRecords = -1
End If
objRs.Close
Set objRs = Nothing
objConn.Close
Set objConn = Nothing
%>
<HTML>
<BODY>
<TABLE BORDER="1">
<%
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
If lngPagina > 1 Then
Response.Write "<a href=""pagedgetrows.asp?pag=" & lngPagina - 1 & """>"
Response.Write "<< terug</a> "
End If
Response.Write "pagina " & lngPagina & " van " & lngAantalPaginas
If lngPagina < lngAantalPaginas Then
Response.Write " <a href=""pagedgetrows.asp?pag=" & lngPagina + 1 & """>"
Response.Write "verder >></a>"
End If
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>
|