Scorrere i record avanti e indietro (Parte I)
Nella gestione dei record dei nostri database spesso è
necessario implementare la funzione per scorrere i record
stessi sequenzialmente.
In questi casi solitamente vengono visualizzati due link che
puntano al record precedente ed al record successivo, in
questo articolo vediamo come realizzare il tutto attraverso
il VBScript e l'SQL.
Per prima cosa creiamo un database ACCESS d'appoggio per
effettuare le nostre prove, per comodità basta creare
una sola tabella con obbligatoriamente un campo ID (contatore
e chiave primaria) ed un paio di campi di qualsiasi genere
(nell'esempio 2 campi testo).
La nostra nuova tabella si chiamerà
"ESEMPIO" ed il database "DBESEMPIO".

Poi inseriamo 5 o 6 record ed il gioco è fatto.

Bene, il nostro database è pronto. Affrontiamo la
realizzazione dello script.
Prima di dedicarci al codice vero e proprio analizziamo gli
aspetti che caratterizzano la nostra problematica.
Un utente che visualizza la nostra pagina deve avere la
possibilità di raggiungere il record successivo o
quello precedente semplicemente cliccando su due link.
Questi due link devono contenere le informazioni necessarie
per istruire nuovamente lo script sulle azioni da
eseguire.
Quali devono essere queste informazioni? Ovviamente il
valore dell'ID del record visualizzato e la direzione
(direzione intesa come record precedente o successivo).
Inoltre non
devono essere tralasciate le condizioni in cui il record
visualizzato è il primo della serie o l'ultimo, in
questi due casi devono comparire o il solo link che punta al
record successivo o il solo link per il record
precedente.
Una volta ricevute le informazioni lo script deve decidere
se avanzare o retrocedere di un record o visualizzare
direttamente un record (condizione ottenuta puntando
direttamente ad un record senza passare dai due link di
scorrimento).
I casi utili previsti sono 3:
- visualizza il record con ID x
- visualizza il record successivo all'ID x
- visualizza il record precedente all'ID x
Nel primo caso si interroga la tabella con una semplice
query che filtra i record per ID
SELECT id, nome, cognome FROM esempio WHERE id = x
Nel secondo caso la query deve restituire il record
successivo all'ID x e qui ci viene in aiuto una query
leggermente più complessa
SELECT TOP 1 id, nome, cognome FROM esempio WHERE id > x
Analizzandola vediamo che vengono selezionati solo i record che hanno ID di valore superiore a quello visualizzato e tra tutti gli ID selezionati si estrae solo il primo (TOP 1) della lista (quello prossimo all'ID di partenza)
esempio:
ID: 1 2 3 4 5 6 7 8
l'ID di partenza è 4
la query seleziona gli ID 5 6 7 8 (maggiori di 4)
ed estrae il record con ID 5 (primo della lista)
Nel terzo caso usiamo la query vista per nel secondo ma con
un ulteriore accorgimento
SELECT TOP 1 id, nome, cognome FROM esempio WHERE id
< x ORDER BY id DESC
Analizzandola si nota che vengono selezionati solo i record
che hanno ID di valore inferiore a quello visualizzato
ordinati in ordine decrescente e tra tutti gli ID selezionati
si estrae solo il primo della lista
esempio:
ID: 1 2 3 4 5 6 7 8
l'ID di partenza è 7
la query seleziona gli ID 1 2 3 4 5 6 (minori di 7)
li ordina in modo descrescente 6 5 4 3 2 1
ed estrae il record con ID 6 (primo della lista)
Non ci rimane come stabilire se visualizzare entrambi i link
di scorrimento (il record visualizzato non è ne il
primo ne l'ultimo) o il solo link che punta al successivo
(il record visualizzato è il primo) o il solo link che
punta al precedente (il record visualizzato è
l'ultimo)
Anche in questo caso l'SQL è la nostra arma
vincente, bisogna selezionare l'ID di valore maggiore e
l'ID di valore minore
SELECT MIN(id), MAX(id) FROM esempio
i due ID estratti vengono messi a confronto con l'ID
visualizzato per stabilire se quest'ultimo è
maggiore dell'ID di valore minimo e se è minore
dell'ID di valore massimo.
Se è maggiore dell'ID di valore minimo allora
deve comparire il link al record precedente.
Se è minore dell'ID di valore massimo allora deve
comparire il link al record successivo.
esempio 1:
ID: 1 2 3 4 5 6 7 8
l'ID di partenza è 5
l'ID minimo è 1
l'ID massimo è 8
5 è maggiore di 1 quindi deve comparire il link al
record precedente
5 è minore di 8 quindi deve comparire il link al
record successivo
esempio 2:
ID: 1 2 3 4 5 6 7 8
l'ID di partenza è 8
l'ID minimo è 1
l'ID massimo è 8
8 è maggiore di 1 quindi deve comparire il link al
record precedente
8 NON è minore di 8 quindi NON deve comparire il link
al record successivo
esempio 3:
ID: 1 2 3 4 5 6 7 8
l'ID di partenza è 1
l'ID minimo è 1
l'ID massimo è 8
1 NON è maggiore di 1 quindi NON deve comparire il
link al record precedente
1 è minore di 8 quindi deve comparire il link al
record successivo
- Articolo precedente Creare e Cancellare Directory
- Articolo successivo Scorrere i record avanti e indietro (Parte II)
Ti potrebbe interessare anche
commenta la notizia
Chiedi alla nostra Redazione!