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

    selezionare record precedente/successivo

    Salve, vorrei una volta caricato un id (ad esempio facciamo il n. 100), stampare l'id precedente e/o quello successivo.

    Il problema è che facendo un semplice select id+1 e/o id-1 c'è il rischio che magari l'id NUMERICAMENTE precedente/successivo non esista.

    ad esempio può darsi che il n. 99 non esista e allora la query dovrebbe posizonarsi sul n. 98, quindi dovrei trovare un modo più efficace di id+1/id-1..

    ho pensato ad un if objrs.eof a catena, cioè, seleziona id-1 fino a che objrs.eof non da un risultato positivo, ma mi sembra un po troppo laborioso.

    esiste un metodo più semplice ?

    Grazie

  2. #2
    Devi usare uno script per la paginazione dove imposti il .pageSize = 1
    In questo modo hai un record per pagina e al posto dei numeretti delle pagine dei risultati della query metti precedente e successivo dove passi il numero di pagina precedente e il numero di pagina successivo.

  3. #3
    ciao e grazie per la risposta

    il db però è mysql e non supporta pagesize se non sbaglio

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    Con MYSQL il problema è risolto all'origine avendo la possibilità di usare la clausola LIMIT

    Roby

  5. #5
    si ma limit serve per selezionare un certo numero di record a partire da una certa posizione no ?

    se io selezione 5 record a partire da quella posizione (dell'id=100) in + o in -, chi mi dice che in quei 5 record li ce ne sia uno che funziona ?

    cioè con il limit gli dico cerca da 100 a 105 e se trovi scrivi. e se dal 101 al 105 non ci sono record ??

    capisci il mio dubbio ? forse mi sfugge qualcosa della clausola limit.. ??

  6. #6
    Ti sta sfuggendo qualcosa.
    Il LIMIT, ad esempio " LIMIT 10, 5" vuol dire posizionati al record 11 (il primo è 0) e leggi per 5 record.
    Occhio, non all'ID 10 ma al record 10.
    Se nel recordset hai i seguenti ID
    1
    3
    4
    7
    8
    9
    11
    14
    15
    17
    19
    22
    24
    25
    33

    44
    55
    56
    57
    58
    69
    Con LIMIT 10,5 verranno letti i dati con ID 19 22 24 25 33
    I link per andare avanti o indietro possono passare il primo valore della funzione LIMIT oppure il numero di pagina il quale moltiplicato per "quanti per pagina", meno "quanti per pagina" da il giusto valore del primo parametro della funzione LIMIT.
    codice:
    quanti = 5
    pagina = request.queryString("pagina")
    if len(pagina) = 0 then pagina = 1
    if isNumeric(pagina) then 
      pagina = cLng(pagina)
    else
      pagina = 1
    end if
    posizione = (quanti * pagina) - quanti
    sql = "SELECT * FROM tabella LIMIT " & posizione & ", " & quanti

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.