Due cose, in ordine
Order by
Supponi di avere una tabella PERSONE con questi campi:
Campo | Tipo |
ID | Numeratore |
NOME | Stringa |
INDIRIZZO | Stringa |
Ora supponi contenga i seguenti dati:
ID | NOME | INDIRIZZO |
1 | Rossi | Viale del tramonto |
2 | Bianchi | Via montanara |
3 | Verdi | Piazza erbe |
4 | Gialli | Via del sole |
Scrivendo “SELECT ID, NOME, INDIRIZZO FROM PERSONE”, il sistema puo' estrarre i dati come li vedi nella tabella qui sopra. In questo caso, la procedura da te messa in piedi funzionerebbe.
Non hai pero' chiesto al database di dare alcun ordine, per cui li estrae in base a come “gli torna piu' comodo in quel momento”. Puo' quindi capitare che in molti casi funzioni, pero' nessuno vieta che il DB torni:
ID | NOME | INDIRIZZO |
1 | Rossi | Viale del tramonto |
3 | Verdi | Piazza erbe |
2 | Bianchi | Via montanara |
4 | Gialli | Via del sole |
Quando questo capita, il tuo codice smette di funzionare correttamente, poiche' alcuni dati non vengono estratti. Nell'esempio sopra, la procedura ti estrae prima il record con ID pari ad 1, poi quello con ID pari a 3 (che e' maggiore di 1) ma a quel punto non estrarra' mail il record con ID pari a 2, poiche' e' minore di 3.
Se vuoi obbligare il DB ad estrarre i record in ordine, allora devi usare la clausola order by
Nell'esempio: SELECT ID, NOME, INDIRIZZO FROM PERSONE ORDER BY ID
Soluzione da te scelta
Ho dubbi anche sulla soluzione da te proposta. Se gli elementi della tabella sono pochi, secondo me ti conviene lavorare in modalita' disconnessa (se cerchi su Google questi termini dovresti trovare un sacco di esempi).
In pratica la logica e' semplice: dalla tabella estrai tutti i dati (che sono limitati) e te li salvi in una collezione di oggetti in memoria. Quindi la tua videata la fai scorrere avanti/indietro sugli elementi di suddetta collezione.
Ci sono diverse opzioni, penso Google ti faccia vedere le piu' usate
Se invece i record sono molti, allora cerca sempre su Google come si possa gestire la paginazione (perche' e' quello che ti serve). Prendendo anche solo il modo in cui hai implementato tutto tu, gia' una clausola TOP 1 indicherebbe al motore di estrarre il primo record. Inutile preparare tutto il sistema per estrarre tanti dati se poi serve solo la prima riga…