PDA

View Full Version : asp dividere la query su più pagine...


SteR9
19-10-2003, 10:06
come faccio a dividere una normalissima qquey in più pagine??

cionci
19-10-2003, 10:52
Fa la tua query normalmente tutte le volte che la pagina viene caricata...
Poi nel recordset setti gli attributi:

rs.PageSize = 10 'i record visualizzati per pagina
rs.AbsolutePage = 1 'la pagina corrente

In questo modo rs.PageCount ti indicherà quante pagine puoi creare...

I record disponbili nel recordset sono a questo punto quelli relativi alla pagina... Ad esempio se rs.AbsolutePage è 2 sono i record dal 11 al 20... Ovviamnete AbsolutePage sarà il parametro che viene passato alla query string navigando tra pagina e pagina...

SteR9
19-10-2003, 13:35
faccio così

Set objRecordset = objConnessione.Execute("SELECT * FROM Acquisti")
pag = Request.QueryString("pag")
objrecordset.PageSize = 2
objrecordset.AbsolutePage = pag

do while not objrecordset.Eof
Response.Write( objrecordset.Fields("Nome")&"<br>" )
objrecordset.MoveNext
loopSet objRecordset = objConnessione.Execute("SELECT * FROM Acquisti")
pag = Request.QueryString("pag")
objrecordset.PageSize = 2
objrecordset.AbsolutePage = pag

do while not objrecordset.Eof
Response.Write( objrecordset.Fields("Nome")&"<br>" )
objrecordset.MoveNext
loop

ma mi da questo errore
Il set di record corrente non supporta i segnalibri. Potrebbe trattarsi di una limitazione del provider o del tipo di cursore selezionato.

matpez
19-10-2003, 14:15
Prova ad aprirlo senza l'EXECUTE ma inq uesta maniera:

rs.Open sSql, cn, 1, 3

Dove sSql è la tua query

SteR9
19-10-2003, 14:25
ok così va,ma mi stampa tutti i record...forse dovrei farlo con un for??

matpez
19-10-2003, 17:03
Originariamente inviato da SteR9
ok così va,ma mi stampa tutti i record...forse dovrei farlo con un for??

Prova ad impostare un ciclo del genere:


ni=0
while rs.EOF=false and ni<Rs.PageSize
ni=ni+1

.
.
.
.
.

rs.movenext
wend

cionci
20-10-2003, 08:39
Stai usando MySQL ? Allora mi sa che non lo supporta...

Con MySQL si fa facilmente:

"SELECT * FROM Acquisti LIMIT " & NumPerPagina*(ni-1) & ", " & NumPerPagina & ";"

SteR9
20-10-2003, 09:17
Originariamente inviato da cionci
Stai usando MySQL ? Allora mi sa che non lo supporta...

Con MySQL si fa facilmente:

"SELECT * FROM Acquisti LIMIT " & NumPerPagina*(ni-1) & ", " & NumPerPagina & ";"
no...sto usando un dbase access...funziona benissimo come ha detto matpez..
grazie! :)

SteR9
20-10-2003, 12:15
ho un problema all'interno del ciclo
vado a fare questa somma
totale = totale + objrecordset.Fields("TotaleSpesa")
che poi stampo quando esco dal ciclo e ho stampato tutto il recordset,però dividendo le pagine mi fa la somma dei record di ogni pagina...non si può fare in modo che per ogni pagina mi faccia la somma di tutto il recordset??

cionci
20-10-2003, 12:20
Per ottenere la somma di totale spesa per tutta la tabella puoi semplicemnte fare un'atra query:

SELECT Sum(TotaleSpesa) As Totale FROM Acquisti ;

Ti ritornarà un recordset con un solo record e con un solo campo di nome Totale...

matpez
20-10-2003, 14:36
Originariamente inviato da cionci
Per ottenere la somma di totale spesa per tutta la tabella puoi semplicemnte fare un'atra query:

SELECT Sum(TotaleSpesa) As Totale FROM Acquisti ;

Ti ritornarà un recordset con un solo record e con un solo campo di nome Totale...

Esattamente....quello che puoi fare con le query fallo il + possibile..i calcoli a mano rendono lento il sito e fanno fare solo casino (vedi il tuo problema)! :)

SteR9
20-10-2003, 17:42
che stupido...vado sempre a complicarmi la vita quando esiste l'sql :D grazie!