ASP Classic

Seitenweise Datensätze, Teil 1

Der Einsatz von PageSize und AbsolutePage in ADO-Recordsets

Besonders große Datenmengen auf ASP-Seiten darzustellen, bringt es mit sich die Datensätze auf mehrere Seiten zu verteilen, damit der Benutzer sein Mausrad beim Scrollen nicht allzu sehr abnutzen muss und etwas Übersichtlichkeit gewahrt bleibt. Das Verfahren ist hinlänglich von Suchmaschinen bekannt. Dort gibt es am oberen und unteren Rand meist Seitennavigatoren, die einen durch die Menge der Datensätze führen.

In diesem ersten Teil des zweiteiligen Artikels soll dargestellt werden, welche Möglichkeiten sich ASP-Entwicklern in Bezug auf die Auswahl der darzustellenden Datensätze bietet, d.h. welche Bordmittel ADO bei der Datensatzabfrage von Hause aus zur Verfügung stellt.

Ein ADO-Recordset bietet drei Eigenschaften, die für diesen Einsatz absolut prädestiniert sind: PageSize, PageCount und AbsolutePage. PageSize legt fest wieviele Datensätze aus dem Recordset auf einmal gelesen werden sollen, d.h. wie lang eine "Seite" werden soll, PageCount gibt an wieviele "Seiten" sich bei der aktuell gewählten PageSize und der Gesamtanzahl der Datensätze ergeben und AbsolutePage legt fest welche Seite gelesen werden soll.

Gehen wir ein Beispiel durch. Gegeben ist eine Tabelle mit 330 Datensätzen, die in Häppchen á 25 Datensätzen angezeigt werden sollen. Beginnen wir zunächst mit den Vorarbeiten, der ADO-Verbindung und dem Recordset:

Set objConn = Server.CreateObject("ADODB.Connection")
strConn = "<Verbindungszeichenfolge zur Datenbank>"
objConn.Open strConn

set rs = Server.CreateObject("ADODB.Recordset")
strSQL = "SELECT * FROM Personen " & _
   "WHERE (Aktiv=1) " & _
   "ORDER BY Nachname"
rs.Open strSQL, objConn, adOpenStatic, adLockOptimistic

Man beachte beim Öffnen des Recordset, das ein statischer Cursortyp eingesetzt wird, denn sonst kann keine interne Bookmark-Verwaltung stattfinden, denn nichts anderes passiert, wenn man einen Recordset in "Seiten" aufteilt.

Den bereits geöffneten Recordset weisen wir nun mit der Zuweisung einer Zahl zur PageSize-Eigenschaft an, zuletzt Genanntes zu tun.

rs.PageSize = 25
rs.AbsolutePage = 1

Durch Abfrage der Eigenschaft PageCount ergibt sich, dass der Recordset nun in 14 Seiten aufgeteilt ist. Durch Zuweisung des Wertes 1 zur Eigenschaft AbsolutePage wird festgelegt dass die erste "Seite" bearbeitet werden soll. Diese Untergruppe des Recordsets kann man nun mit einer Schleife durchlaufen:

for i = 1 to rs.PageSize

   ... Verarbeitung des Datensatzes

   rs.movenext
   if rs.EOF then exit for
next

rs.close
Set rs = nothing
objConn.close
Set objConn = nothing

Wichtig ist, dass die Schleife nach dem Zugriff auf den letzten Datensatz verlassen wird.

Das einzige was nun fehlt ist eine Seitennavigation, mit der die einzelnen Seiten abgerufen werden können. Am sinnvollsten ist die Übergabe eines Page-Parameters an die ASP-Seite, dessen Wert der Eigenschaft AbsolutePage zugewiesen werden kann. Ein Verfahren zur Standardisierung eines solchen Navigators wird im zweiten Teil des Artikels vorgestellt.

kick it on dotnet-kicks.de AddThis 0 wikio-Stimme(n) Trackback-Url...

Schlagworte

Keine Kommentare bislang...

Dein Kommentar hierzu...


Kommentar-Feed für diesen Beitrag
Gravatare werden unterstützt .:. eMail-Adressen werden nicht veröffentlicht
 

RSS-Feed

Die URL des Standard-Newsfeed von zerbit.de lautet:

http://www.zerbit.de/rssfeed.aspx

Login


 

 

Statistik



kürzlich kommentiert

Artikel 28

  • Datum: 24.04.2005
    Kategorie: ASP Classic
    Zugriffe: 1.361
    Kommentare: 0
    Trackbacks: 0

Letzte Beiträge

Kategorien

Buttons & More

Blog-Roll

Banner Piraten-Partei