Visualizzazione dei risultati da 1 a 3 su 3
  1. #1

    [ASP Classico] Paginazione

    Salve a tutti,
    ho trovato del codice su di un sito per fare la paginazione efficiente con le pagine ASP ma in fase di compilazione mi da un errore. Questo è il codice:
    codice:
    <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
    <html>
    
    <head>
    <title>Sans Titre</title>
    <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
    <meta name="generator" content="HAPedit 3.1">
    </head>
    
    <body bgcolor="#FFFFFF">
    <%
    Set objRecordset = Server.CreateObject("ADODB.Recordset")
    ' modificare il path per puntare correttamente al database
    strConnection = "Provider=Microsoft.Jet.Oledb.4.0;data source=" & server.mappath("database.mdb")
    
    ' numero di record che vogliamo mostrare per pagina ? utilizziamo una costante
    CONST RECORDMAX = 10
    ' controlla se sia stato passato il parametro <page>, cioè il numero di pagina
    If Request.QueryString("page").Count > 0 Then
      intPageNum = CInt(Request.QueryString("page"))
    Else
      intPageNum = 1 'non è stato passato, di default iniziamo dalla prima pagina
    End If
    With objRecordset
      ' il seguente è il tipo di cursore più performante ? non possiamo però utilizzare la proprietà RecordCount (poco importa, non ci serve in questa sede?)
      .CursorType = adOpenForwardOnly
      ' la localizzazione del cursore di default è lato server, noi la spostiamo sul client
      .CursorLocation = adUseClientBatch
      ' il tipo di Lock più performante
      .LockType = adLockReadOnly
      ' creiamo un buffer di memoria locale - dove verranno stipati i record - uguale a RECORDMAX
      .CacheSize = RECORDMAX
      .PageSize = RECORDMAX
      .Source = "SELECT * FROM tabella"
      .ActiveConnection = strConnection
      .Open ' eseguiamo la Query
      ' questo è importante: disconnettiamo il Recordset dalla sorgente dati (cioè il database).
      ' Uno dei maggiori vantaggi è dato dalla scalabilità: per 100 utenti che "scorrono" le pagine,
      ' non ci saranno altrettante connessioni e cursori aperti sul server. Per 1000 utenti idem.
      Set .ActiveConnection = Nothing
      intTotalPages = .PageCount
      If NOT .EOF then
        ' questo è importante: grazie al metodo GetRows dell'oggetto Recordset recuperiamo
        ' SOLTANTO il numero di record necessari per la pagina e li stipiamo in un array.
       .AbsolutePage = intPageNum
        arrData = .GetRows(RECORDMAX)
        intColsTot = Ubound(arrData,1) ' numero di colonne, cioè di campi
        intRowsTot = Ubound(arrData,2) ' numero di righe, cioè di records
      End If
    End With
    ' Rilasciamo le risorse
    objRecordset.Close:Set objRecordset = Nothing
    
    ' Questo ciclo mostra il contenuto dei campi di ciascun record
    ' ovviamente va adattato e reso meno "spartano" (è qui solo per esempio)
    For i = 0 To intRowsTot
      Response.Write "
    "
      For j = 0 To intColsTot
        Response.Write " "&arrData(j, i)
      Next
    Next
    
    'Pagina precedente ? mostra una freccia a sinistra
    Response.Write "
    
    "
    If intPageNum > 1 Then
      Response.Write( "<-- ")
    End If
    
    'Mostra la pagina corrente in BOLD (non cliccabile) + tutte le altre (cliccabili)
    For i = 1 to intTotalPages
      If i = intPageNum Then
        Response.Write(" "&i&"")
      Else
        Response.Write(" "&i&"")
      End If
    Next
    
    ' Pagina successiva ? mostra una freccia a destra
    If intPageNum < intTotalPages Then
      Response.Write( " -->")
    End If
    
    %> 
    </body>
    
    </html>
    L'errore che mi ritorna il server è :

    ADODB.Recordset (0x800A0BB9)
    Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.
    /ASP/ripasso/paginazione/paginazione.asp, line 28

    dove la riga 28 è

    codice:
    .CursorLocation = adUseClientBatch
    Ho provato anche con adUseClient ma mi da lo stesso errore sapreste dirmi perchè da errore? Grazie

  2. #2
    Hai incluso il file adovbs.inc ?
    xxx

  3. #3
    si infatti avevo risolto includendo il file che dici tu...

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2026 vBulletin Solutions, Inc. All rights reserved.