stephan: HILFE, nur 5 Datensätze einlesen funktioniert nicht!!

Hallo!

Ich schaffs einfach nicht nur 5 Datensätze pro Seite aus meiner DB auszulesen. Hab mir auch schon den Forumsbeitrag vom seppi durchgelesen, das funktioniert aber auch nicht.

Kann mir da bitte wer weiterhelfen? Es wäre wirklich sehr wichtig für mich und unsere Firma.

Hier ist mein ASP-Code:

"...
rsboerse.Open cmdboerse, , 1, 3
rsboerse.PageSize = 5
          
Do While Not rsboerse.EOF %>"

Gruß und Dank,
Stephan

  1. Hallo Stefan!

    Ich benutze dafür immer : rsboerse.MaxRecords = 5

    Bis dann
    Alex

    1. Hallo Stefan!

      Ich benutze dafür immer : rsboerse.MaxRecords = 5

      Bis dann
      Alex

      Wenn ich es mit MaxRecords versuche erhalte ich folgende Fehlermeldung:

      "ADODB.Recordset-Fehler '800a0e79'
      Die von der Anwendung angeforderte Operation ist für ein geöffnetes Objekt nicht erlaubt. "

      Was ist da falsch?

      Danke,
      Stephan

      1. Hallo Stephan!

        Verwende rs.MaxRecords = 5 BEVOR du die Datenbank öffnest!
        Also:
        Rs.MaxRecords = 5
        Rs.open ...

        Bis dann
        Alex

        1. Hallo Stephan!

          Verwende rs.MaxRecords = 5 BEVOR du die Datenbank öffnest!
          Also:
          Rs.MaxRecords = 5
          Rs.open ...

          Bis dann
          Alex

          Hi Alex!

          Irgendwie passiert dann bei mir gar nichts.
          Es werden weiterhin alle Einträge angezeigt.
          Schön langsam verzweifle ich jetzt an meinem ASP-Skript!

          Vielleicht kannst du den Code noch einmal analysieren.

          ASP-Code:

          <%
            Set Hardwaredb = Server.CreateObject("ADODB.Connection")
            Hardwaredb.Open "betriebe"
            Set cmdboerse = Server.CreateObject("ADODB.Command")
            Set rsboerse = Server.CreateObject("ADODB.Recordset")
            cmdboerse.CommandText = "SELECT * FROM Ergebnissuche WHERE  
            (Ergebnissuche.Kaufe=On) ORDER BY Ergebnissuche.Bezeichnung"
            cmdboerse.CommandType = 1
            Set cmdboerse.ActiveConnection = Hardwaredb
                    
            rsboerse.MaxRecords = 5
            rsboerse.Open cmdboerse, , 1, 3
                    
                    
            Do While Not rsboerse.EOF
          %>

          Solltest du Zeit haben, bitte um Analyse des Codes.

          Danke im voraus für die Mühe,
          Stephan

          1. Hallo nochmal!

            Kann da keinen Fehler entdecken. Mir mir funktioniert‚s.
            Hier mal ein paar Zeilen von mir:

            Set Cmd = Server.CreateObject("ADODB.Command")
            Set RS = Server.CreateObject("ADODB.Recordset")
            Cmd.CommandTimeout = 5
            Cmd.Prepared = TRUE
            Cmd.CommandType = &H0001
            Cmd.ActiveConnection = Application("DBS")
            Cmd.CommandText = Session("SQL_cmd")
            RS.CursorType = 3
            RS.MaxRecords = 1
            RS.Open Cmd

            Das gibt bei mir genau einen Datensatz raus.
            Ansonsten weiss ich auch nicht weiter...

            Bis dann
            Alex

  2. Hallo Stephan,
    ich hab das auch dem Seppl schon geschrieben,
    es heisst "self" aber bitte vielleicht gehts mit Beispiel:

    <%@ LANGUAGE=VBSCRIPT %>
    <!-- #INCLUDE FILE="../Include/Connection.asp" -->
    <HTML>
    <HEAD>
    <TITLE>ASPPaging.asp</TITLE>
    <STYLE TYPE="text/css">
    BODY {font-family:Tahoma,Arial,sans-serif; font-size:10pt}
    .heading {font-family:Tahoma,Arial,sans-serif; font-size:14pt; font-weight:bold}
    .cite {font-family:Tahoma,Arial,sans-serif; font-size:8pt}
    </STYLE>
    </HEAD>
    <BODY BGCOLOR="#FFFFFF">
    <SPAN CLASS="heading">Paging through Recordsets using ASP</SPAN><HR>
    <!--------------------------------------------------------------------------->

    <%
      Dim rsData
      Dim iPage
      Dim iTotalPages
      Dim fldF
      Dim iRec
      Dim sQuote
      Dim sMe

    sQuote = Chr(34)  ' the double quote character

    Set rsData = Server.CreateObject("ADODB.Recordset")

    ' set the page size
      rsData.PageSize = 10
      rsData.CursorLocation = adUseClient

    ' open the data
      rsData.Open "authors", strConn, _
                  adOpenForwardOnly, adLockReadOnly, adCmdTable

    ' get the requested data
      If Request.QueryString("PAGE") = "" Then
        iPage = 1
      Else
        ' protect against out of range pages, in case
        ' of a user specified page number
        If iPage < 1 Then
          iPage = 1
        Else
          If iPage > rsData.PageCount Then
            iPage = rsData.PageCount
          Else
            iPage = CInt(Request.QueryString("PAGE"))
          End If
        End If
      End If

    ' set the page
      rsData.AbsolutePage = iPage

    ' start building the table
      Response.Write "<TABLE BORDER=1><THEAD><TR>"
      For Each fldF In rsData.Fields
        Response.Write "<TD>" & fldF.Name & "</TD>"
      Next
      Response.Write "</TR></THEAD><TBODY>"

    ' now loop through the
      For iRec = 1 To rsData.PageSize
        If Not rsData.EOF Then
          Response.Write "<TR>"
          For Each fldF In rsData.Fields
            Response.Write "<TD>" & fldF.Value & "</TD>"
          Next
          Response.Write "</TR>"
          rsData.MoveNext
        End If
      Next
      Response.Write "</TBODY></THEAD></TABLE><P>"

    ' now some paging controls
      sMe = Request.ServerVariables("SCRIPT_NAME")
      Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=1" & sQuote & ">First Page</A>"

    ' only give an active previous page if there are previous pages
      If iPage = 1 Then
        Response.Write " <SPAN>Previous Page</SPAN>"
      Else
        Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & iPage - 1 & sQuote & ">Previous Page</A>"
      End If

    ' only give an active next page if there are more pages
      If iPage = rsData.PageCount Then
        Response.Write " <SPAN>Next Page</SPAN>"
      Else
        Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & iPage + 1 &  sQuote & ">Next Page</A>"
      End If

    Response.Write " <A HREF=" & sQuote & sMe & "?PAGE=" & rsData.PageCount & sQuote & ">Last Page</A>"

    ' and clear up
      rsData.Close
      Set rsData = Nothing
    %>

    <!--------------------------------------------------------------------------->
    <HR><SPAN CLASS="cite">©1999 <A CLASS="cite" HREF="http://www.wrox.com/">Wrox Press</A> -
    <A CLASS="cite" HREF="http://webdev.wrox.co.uk/books/2610/">Professional ASP 3.0</A> (ISBN: 1-861002-61-0)</SPAN>
    </BODY>
    </HTML>

    Gruss
    Christian

  3. Hi Stephan,

    ich hatte die gleichen Probleme mit dem "MaxRecords". Bei mir klappte es auch nicht. Da habe ich mich für eine anderen Lösung entschieden. Einem Zähler. Damit kann ich dann entscheiden, wieviele Datensätze ich anzeigen lasse. Anbei mein Code. Du machst zwar den Zugriff anders als ich, sollte aber auch bei Dir funktionieren.

    Gruß

    Tomcat

    <%
    Set conn = Server.CreateObject("ADODB.Connection")
    conn.open "[DB]"
    SQL = "SELECT * FROM [Tabelle] where [...etc...]"
    Set rs = Server.CreateObject("ADODB.Recordset")
    rs.Open sql, conn, 3, 3
    rs.MoveFirst

    n=0 <-- Zähler wird auf "0" gesetzt

    If rs.eof then
    %>
    <i>Sorry, zur Zeit sind keine Daten vorhanden.</i>"
    <%
    else

    do while (Not rs.eof) AND (n<2) <-- Hier bestimme ich die Anzahl der anzuzeigenden Datensätze

    On Error Resume Next
    rs.MoveNext

    n=n+1  <-- Hier wird der Zähler um jeweils "1" erhöht.

    loop
    end if
    %>