Visualizzazione dei risultati da 1 a 4 su 4
  1. #1
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363

    Paginazione: strano comportamento

    Ho eseguito una paginazione, ma sto verificando uno strano comportamento: vengono sempre visualizzati tutti i record fino alla fine, anche quando il valore di PageSize è minore del numero dei record. Se cambio il valore di AbsolutePage, l'unica cosa che ottengo che cambia il record a cui inizia l'elenco, poi vengono comunque mostrati tutti i record seguenti.

    Questo è un estratto del codice:

    codice:
        Set rsMessaggi = Server.CreateObject("ADODB.Recordset")
        rsMessaggi.ActiveConnection = dbMess  
        rsMessaggi.Source = strSql
        rsMessaggi.CursorType = 3
        rsMessaggi.PageSize = 2
        rsMessaggi.Open  
        response.write rsMessaggi.PageCount
        rsMessaggi.AbsolutePage = 1
    
        If Not rsMessaggi.EOF Then
          Do Until rsMessaggi.EOF
            Response.Write rsMessaggi("idMessaggio") & "
    "
            rsMessaggi.MoveNext
          Loop
        End If
        Set rsMessaggi = Nothing
      
      End If
    Dove sbaglio? Sbaglio io? Grazie!

  2. #2
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592

    Re: Paginazione: strano comportamento

    Originariamente inviato da longline
    Ho eseguito una paginazione, ma sto verificando uno strano comportamento: vengono sempre visualizzati tutti i record fino alla fine, anche quando il valore di PageSize è minore del numero dei record. Se cambio il valore di AbsolutePage, l'unica cosa che ottengo che cambia il record a cui inizia l'elenco, poi vengono comunque mostrati tutti i record seguenti.

    Questo è un estratto del codice:

    codice:
        Set rsMessaggi = Server.CreateObject("ADODB.Recordset")
        rsMessaggi.ActiveConnection = dbMess  
        rsMessaggi.Source = strSql
        rsMessaggi.CursorType = 3
        rsMessaggi.PageSize = 2
        rsMessaggi.Open  
        response.write rsMessaggi.PageCount
        rsMessaggi.AbsolutePage = 1
    
        If Not rsMessaggi.EOF Then
          Do Until rsMessaggi.EOF
            Response.Write rsMessaggi("idMessaggio") & "
    "
            rsMessaggi.MoveNext
          Loop
        End If
        Set rsMessaggi = Nothing
      
      End If
    Dove sbaglio? Sbaglio io? Grazie!
    Secondo me dovresti uscire dal ciclo "Do until .." quando la pagina ha raggiunto il limite PageCount... tramite una istruzione ..or PageCount = 20 per esempio... ma pi PageCount chi la aggiorna...? e poi quando pagini alla pagina successiva come partiresti dal record 21 esimo? devi salvare l'ultimo record-key letto e proseguire da quello....penso
    quindi imposta un contatore che incrementi nel ciclo e testa se hai raggiunto Il valore prefissato PageCount... se si esci con una istruzione "exit do" ....

    ciao
    Vic53
    Vic53

  3. #3
    Utente di HTML.it L'avatar di longline
    Registrato dal
    Sep 2001
    Messaggi
    5,363
    Ma allora a cosa serve usare la paginazione se non funziona? Una volta paginato, il recordset dovrebbe essere limitato ai record della pagina. Se questo devo farlo io a mano, a cosa servirebbe la paginazione?

  4. #4
    Utente di HTML.it L'avatar di vic53
    Registrato dal
    Oct 2010
    residenza
    Fonte Nuova (Roma)
    Messaggi
    592
    Originariamente inviato da longline
    Ma allora a cosa serve usare la paginazione se non funziona? Una volta paginato, il recordset dovrebbe essere limitato ai record della pagina. Se questo devo farlo io a mano, a cosa servirebbe la paginazione?
    le istruzioni seguenti....
    If Not rsMessaggi.EOF Then
    Do Until rsMessaggi.EOF
    Response.Write rsMessaggi("idMessaggio") & "
    "
    rsMessaggi.MoveNext
    Loop
    End If
    ...
    indicano che tra l'istruzione Do e Loop ci sia solo l'uscita per fine file (end of file)...
    Potresti metterci la OR con la variabile PageCount per riverificare l'uscita? naturalmente Pagecount potrebbe anche essere una variabile che diventa "true" quando raggiunge il limit count prefissato....


    diventa quindi
    If Not rsMessaggi.EOF Then
    Do Until rsMessaggi.EOF or rsMessaggi.Pagecount
    Response.Write rsMessaggi("idMessaggio") & "
    "
    rsMessaggi.MoveNext
    Loop
    End If

    prova se funge
    ciao
    Vic53
    Vic53

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 © 2025 vBulletin Solutions, Inc. All rights reserved.