Visualizzazione dei risultati da 1 a 2 su 2

Discussione: problema paginazione

  1. #1

    problema paginazione

    buongiorno,
    uso questo codice per impaginare i risultati delle ricerche effettuate nel mio sito:




    <%

    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 = 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 Immagine1, Vendita, Fitto, Regione, Provincia, Comune, TipologiaImmobile, Descrizione, MetriQuadri, Prezzo, ID, Agenzia FROM Immobili WHERE TipologiaImmobile = '"&tipologia&"' AND Vendita = "&vendita&" AND Fitto = "&fitto&" AND Provincia = '"&provincia&"' AND MetriQuadri >= "&estensioneMin&" AND MetriQuadri <= "&estensioneMax&" AND Prezzo >= "&valoreMin&" AND Prezzo <= "&valoreMax&" ORDER BY '"&ordinaper&"' "&ordinamento


    .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

    %>

    Tutto funziona bene nella prima pagina, ma quando uso i link generati a fondo pagina ho questo errore:

    Microsoft JET Database Engine error '80040e14'

    Syntax error (missing operator) in query expression 'TipologiaImmobile = '' AND Vendita = False AND Fitto = False AND Provincia = '' AND MetriQuadri >= AND MetriQuadri <= AND Prezzo >= AND Prezzo <='.

    I parametri di ricerca dei record diventano nulli...

    Grazie
    Luca

  2. #2
    nei link per passare alle pagine successive (o precedenti) oltre al numero pagina, devi passare anche tutti i parametri che hai passato la prima volta alla pagina di ricerca...

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.