Newsgroup: it.comp.www.asp
Titolo: Help, sfida :)

Ciao a tutti,
sto cercando una soluzione a questo problemino:
ho una tabella con un campo id come chiave primaria. ho una pagina asp che
legge i dati della tabella e mostra l'elenco dei record.
se clicco sul record vado alla scheda con i dettagli.
ovviamente mi riferisco al record passando l'id dalla pagina elenco.asp alla
pagina scheda.asp.
ora mi piacerebbe avere nella pagina della scheda due pulsanti che, se
cliccati, mostrino il record precedente e quello successivo rispetto a
quello visualizzato.
ovvio che se faccio (id-1) e (id+1) va tutto bene, a meno che non ci sia
qualche record cancellato in mezzo, e che quindi il record successivo a
quello mostrato abbia un id diverso da (id+1).
come posso fare, evitando di ciucciare troppe risorse con select vari e
controlli di rs.eof?
grazie.
filippo

 e controlli di rs.eof?
quando richiami la pagina in base alla *direzione* fai una select si questo
tipo:
SELECT campo... FROM tabella WHERE ID > request("id") ne caso vai avanti...
oppure ID < request("id") nel caso vai indietro... in questo modo risolvi
anche il problema dei buchi... poi controlli bof e eof per sapere che sei
all'inizio o alla fine della tabella...
ciao
--
Lino Mari [mod - it.economia.e-commerce]
http://www.ebow.it
 - e-business on web!
http://www.dev2dev.it
 - La rete ha connesso nuove particelle - d2D004
I veri problemi della vita saranno sicuramente cose che non t'erano mai
passate per la mente.

- SELECT campo... FROM tabella WHERE ID > request("id") ne caso vai
avanti...
- oppure ID < request("id") nel caso vai indietro... in questo modo risolvi
Allo script di Lino aggiungerei:
SELECT TOP 1 campo... FROM tabella WHERE ID > request("id") ORDER BY
request("id") ASC
SELECT TOP 1 campo... FROM tabella WHERE ID < request("id") ORDER BY
request("id") ASC
--
:: Fate i bravi e non clonate le pecore!
:: Distractly yours... 
man...@ufologia.net

 all'inizio o alla fine della tabella...
Esatto...il trucco della WHERE è la soluzione giusta...comunque per fare una
cosa più pulita se stai usando Access (ma ogni db ha la sua versione) fai un
bel:
SELECT TOP 1 campo1,campo2... FROM tabella WHERE ID etc etc per prendere
solo il primo campo invece che fatti ritornare tutto il recordset che
potrebbe essere molto lungo.
Gianni

Scusami ho sbagliato =)
AVANTI:
strSQL = "SELECT TOP 1 campo_ID FROM tabella WHERE campo_ID > " &
Request("ID") & " ORDER BY campo_ID ASC"
INDIETRO:
strSQL = "SELECT TOP 1 campo_ID FROM tabella WHERE campo_ID < " &
Request("ID") & " ORDER BY campo_ID DESC"
Così viene caricato nel recordset solo 1 record. Se il recordset è vuoto
significa che il tuo record attuale è il primo o l'ultimo della tabella.
Ciao (mai fare le cose di fretta....)


 oppure ID < request("id") nel caso vai indietro... in questo modo risolvi
Ciao, tutto giusto, ma non è  quello che intendevo io.
Rileggendo il mio post mi sono accorto di aver omesso una cosa importante:
mi piacerebbe poter scorrere avanti e indietro dalla pagina della scheda
rispetto all'elenco di partenza.
Cioé: se l'elenco è filtrato con dei parametri ed è ordinato secondo un
campo diverso dall'id sarebbe bello poter mostrare la scheda successiva e
precedente mantenendo gli stessi criteri impostati nella query dell'elenco.
Mi viene da pensare di prendere il campo usato per l'order by e utilizzarlo
in questo modo:
select top 1 * from tabella where [campoOrder] > [campoOrder.valueAttuale]
where [condizioni prese dall'elenco] order by [ordine preso dall'elenco]
Secondo te c'è un sistema migliore?
Grazie.
Filippo

 query dell'elenco.
insieme all'id passi anche gli altri paramentri... qual'e' il problema?
