|
 |
 |

Frage: Wie kann ich pro Seite 10 Datensätze anzeigen (mit Links auf weitere Seiten) |
Sie kennen bestimmt aus Suchmaschinen die Möglichkeit, nicht alle Suchergebnisse auf einmal,
sondern z.B.: 10 Ergebnisse pro Seite anzeigen zu lassen. ADO stellt Ihnen alle Methoden bereit,
um dies einfach und effektiv zu bewerkstelligen
PageSize - stellt die Seitengröße ein (Anzahl Datensätze pro Seite)
PageCount - gibt die Anzahl der Seiten zurück
AbsolutePage - stellt die aktuelle Seite ein
Nachfolgend sehen Sie ein einfaches Beispiel für eine verteilte Auflistung von Suchergebnissen
mit jeweils 10 Datensätzen pro Seite. Hinter der Auflistung der Datensätze werden die Links
auf die weiteren verfügbaren Seiten dargestellt. (Weiter zu Seite: 1 2 3 ...)
[listpages.asp]
<%
' --- Erstellen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open "DSN", "UID", "PWD"
' --- SQL-Statement erstellen
Dim SQL
SQL = "SELECT <spalte> FROM <tabelle> WHERE <suchspalte> = '" & <aspvariable> & "'"
' --- Definieren der Seitengröße (Anzahl Datensätze pro Seite)
Dim PageSize
PageSize = 10
' --- Initialisieren des Counters
Dim intCounter
intCounter = 1
' --- Einstellen der aktuellen Seite, weitere Prüfung
' --- erfolgt nach Öffnen des Recordsets
Dim AbsolutePage
AbsolutePage = Request("PN")
' --- Erstellen des Recordsets
Set objRS = Server.CreateObject("ADODB.Recordset")
' --- Zuweisen der Seitengröße (Anzahl Datensätze pro Seite)
' --- Diese Zuweisung muss vor dem Öffnen des Recordsets erfolgen.
objRS.PageSize = PageSize
objRS.CacheSize = PageSize
' --- Öffnen des Recordsets
objRS.Open SQL, objConn, 3, 3
' --- Prüfen, ob die angegebene Seitennummer verwendet werden kann
If AbsolutePage = "" Or Not IsNumeric(AbsolutePage) Or CInt(AbsolutePage) > CInt(objRS.PageCount) Then
AbsolutePage = 1
End if
' --- Zuweisen der aktuellen Seite. Diese Zuweisung
' --- muss nach dem Öffnen des Recordsets erfolgen
objRS.AbsolutePage = AbsolutePage
' --- x Datensätze anzeigen. Prüfung auf EOF (letzter Datensatz)
' --- und Anzahl der bisher ausgegebenen Datensätze (intCounter)
' --- muss erfolgen, da ansonsten zuviele Datensätze ausgegeben werden
Do While Not objRS.EOF And intCounter <= PageSize
' --- Ausgabe des aktuellen Datensatzes
Response.Write objRS.Fields("<spalte>") & "<br>"
' --- Erhöhen des Zählers zum Ermitteln der bisher ausgegebenen Datensätze
intCounter = intCounter + 1
' --- Weiter zum nächsten Datensatz
objRS.MoveNext
Loop
' --- Erstellen der Links auf die weiteren Seiten
For intPageCounter = 1 To objRS.PageCount
' --- Die aktuelle Seite wird nicht mehr verlinkt
If CInt(intPageCounter) = CInt(AbsolutePage) Then
Response.Write intPageCounter & " "
Else
Response.Write "<a href=""listpages.asp?PN=" & intPageCounter & """>" & intPageCounter & "</a> "
End if
Next
' --- Schliessen und terminieren des Recordsets
objRS.Close
Set objRS = Nothing
' --- Schliessen und terminieren der Datenbankverbindung
objConn.Close
Set objConn = Nothing
%> |
|
 |
 |
|
|