.:thomas:.: Script von Stefan für Datensätze pro Seite

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
%>

  1. 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 =:-)

    1. Danke Norbert,
      die Idee hat mir echt geholfen, ist nur leider sau viel arbeit, aber was solls :-) Also dann mal ran...