Visualizzazione dei risultati da 1 a 4 su 4

Discussione: Paginazione avanzata

  1. #1

    Paginazione avanzata

    ho qualche problema sulle paginazioni con ORACLE e andando in giro ho trovato questo script di aspcode.it che utilizza un metodo molto performante sulle paginazioni... ma non riesco ad adattarlo alle mie esigenze.

    In particolare non riesco a capire come modificare la parte di visualizzazione dei risultati... per semplicità vi incollo il codice intero e seleziono di rosso la parte che vorrei modificare:


    • <%

      Set Conn=Server.CreateObject("ADODB.Connection")
      Set objRecordset = Server.CreateObject("ADODB.Recordset")
      strConnection = "Provider=msdaora; Data Source=test; User Id=utente; Password=pass;"
      ' 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 = adUseClient
      ' 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 TB_ARTICLES"
      .ActiveConnection = conn
      .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

      %>
    Pippo Giacalone
    giacalone@tin.it

  2. #2
    Utente di HTML.it L'avatar di [trodat]
    Registrato dal
    Oct 2004
    Messaggi
    2,135
    Lo Stato dà un posto. L’impresa privata dà un lavoro. – Indro Montanelli

  3. #3
    grazie trodat per il suggerimento,

    avevo già guardato il post e pur utilizzando lo stesso metodo ho l'impressione che ogni volta che richiamo una pagina di 20 record mi carica in memoria tutti i record della tabella (2000)

    puoi suggerirmi invece come personalizzare quello script che ho allegato ?
    Pippo Giacalone
    giacalone@tin.it

  4. #4
    :berto: qualche suggerimento ?
    Pippo Giacalone
    giacalone@tin.it

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.