Newsgroup: it.comp.lang.visual-basic
Titolo: Scorrere record all'indietro

Salve a tutti
Gentilmente, avrei bisogno di un suggerimento.
Ho creato un form in cui inserendo un campo e "clickando"
su un bottone "ricerca" effettua una query prendendo tutti gli
elementi della tabella che hanno valore del campo maggiore
o uguale a quello inserito.
Però visualizzato il record voglio dare all'utente la possibilità
di avanzare al record successivo o al record precedente.
- Ho limitato la query per prendere solo 11 record.
Correggetemi se sbaglio, è preferibile non eseguire una query
che da come risultato ad es. 2000 elementi, e quindi bisogna limitare
il numero di record.
Quindi per scorrere i record in avanti non c'è problema, tenendo sotto
controllo la fine degli 11 elementi.
- Ma per scorrere indietro, logicamente oltre il primo elemento,
se uso una query del tipo:
SELECT * FROM prodotti WHERE campo<first_record LIMIT 11
questo da 11 record, ma sono i primi 11 della tabella.
Come si fa prendere i primi 11 che precedono last_record????
Saluti a tutti e Grazie mille
Valdes

 Come si fa prendere i primi 11 che precedono last_record????
SELECT  * FROM Orders WHERE OrderID IN
(SELECT TOP 10 OrderID FROM Orders ORDER BY OrderID DESC)
Ave
giuseppeD

 (SELECT TOP 10 OrderID FROM Orders ORDER BY OrderID DESC)
Mmmmm..., sono in ordine decrescente.
Secondo me non si può non essendoci (?) il contrario del TOP (BOTTOM/LAST?)
con una sola query, ma, come hai fatto, si prende il blocco che interessa e
poi lo si deve scandagliare al contrario (dal fondo all'inizio), in modo che
l'ordine venga ristabilito.

 ha scritto nel messaggio
news:c6hcs5$c0nd1$1...@ID-174464.news.uni-berlin.de...

ho provato ad aggiungere alla fine
ORDER BY OrderID
ma il visualizzato non cambia,
presenta gli ultimi record in modo crescente.
Possibile che non si possa costruire un'istruzione sql che permetta di
prelevare gli ultimi x record, presenti in tabella,
e ordinarli in modo crescente o decrescente come si desidera ?
Ave
giuseppeD

[GiuseppeD = 
circa_NoSpam_...@tin.it
 in
dD2jc.144503$
rM4.5...@news4.tin.it
] o forse Valdes ;-) ha scritto:
...
Prova cosě:
Occorre adattare 5 alle dimensioni desiderate del blocco (ma, attenzione, in
caso di duplicati questi potrebbero essere restituiti tutti, dipende dal
database) e '011' al limite (escluso) minimo di inizio del blocco se segue:
Select *
From
(Select Top 5 *
 From Tabella
 Where campo_di_ordinamento<'011'
 Order By campo_di_ordinamento Desc)
Order By campo_di_ordinamento Asc

 Order By campo_di_ordinamento Asc
Grazie per la risposta e' stata molto utile.
Le query le eseguo sul database mysql, dopo
qualche ora di tentativi, con la precedente query,
dal manuale di mysql ho letto che:
****mysql non supporta le sottoselezioni
Quindi il problema, di scorrere all'indietro una tabella,
l'ho risolto con la seguente query:
Select *
 From Tabella
 Where campo_di_ordinamento<'011'
 Order By campo_di_ordinamento Desc LIMIT 11
e utilizzando il metodo "sort" dei recordset di vb.
Quest'ultimo per scorrere in modo crescente con movenext
e decrescente con MovePrevious.
e-mail rimuovere XYZ
Saluti
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it