Script von Stefan für Datensätze pro Seite
.:thomas:.
- asp.net
Hallo,
ich spiele mich gerade mit dem Script, von Stefan Falz, wie man eine bestimmte Anzahl von Datensätzen auf einer Seite anzeigen kann.
Nur leider bekomme ich folgende Fehlermeldung:
"Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype."
Das ist folgende Zeile:
objRS.AbsolutePage = AbsolutePage
Zur Übersicht, hänge ich mal das ganze Script mit dran:
<%
' --- Erstellen der Datenbankverbindung
Set objConn = Server.CreateObject("ADODB.Connection")
objConn.Open myDSN
' --- SQL-Statement erstellen
Dim SQL
SQL = "SELECT * FROM cd"
' --- 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("name") & "<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
%>
Hallo Thomas!
MySQL unterstützt LIMIT - daher kannst Du relativ einfach direkt mit dem Select-Statement Datensätze x..y ausgeben.
Mehr dazu unter http://www.mysql.com/doc/en/SELECT.html
Beispiel:
SELECT * FROM table LIMIT 5,10; # Retrieve rows 6-15
Das drumherum dürfte nicht all zu schwierig sein ;-)
mfg
norbert =:-)
Danke Norbert,
die Idee hat mir echt geholfen, ist nur leider sau viel arbeit, aber was solls :-) Also dann mal ran...