Forum 

Forum AspNuke.it - Il tuo Portale OpenSource in ASP

Paginazione e clausola LIMIT

Autore Messaggio
mennella

Avanzato
Avanzato
155 Discussioni



Profilo - mennella
01 aprile 2007 alle 13:48:44 Profilo - mennellaInvia un messaggio privato Rispondi quotando
Sto cercando di definire uno strumento di paginazione per un sistema di carrello della spesa che poggia su un db esterno a aspnuke. il db contiene circa 40.000 records e, quindi, quando la ricerca è molto ampia il problema è reale.
cercando in giro ho trovato una funzionalità che si basa sulla clausola LIMIT da aggiungere alla SELECT, ma non sono ancora riuscito a farla funzionare.
le domande sono due:
1)che voi sappaite, ci sono dei problemi specifici con l'ulitilizzo della clausola LIMIT in aspnuke?
2) l'errore che al momento mi produce è il seguente:
ErroreSQL -2147217900: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query '( TitoloOfferta LIKE '%laser%' AND TitoloOfferta LIKE '%a4%' OR InfoOfferta LIKE '%laser%' AND InfoOfferta LIKE '%a4%' LIMIT 0, 20 )'.
SQL : SELECT * FROM tbl_Offerte WHERE ( TitoloOfferta LIKE '%laser%' AND TitoloOfferta LIKE '%a4%' OR InfoOfferta LIKE '%laser%' AND InfoOfferta LIKE '%a4%' LIMIT 0, 20 )
.
Qualche idea in proposito?
---------------
Questi li ho fatti io! 8)
http://www.digirolamoeditore.com
http://www.sferaufficio.com
pradella

Moderatore

Utente
Utente
99 Discussioni



Profilo - pradella
01 aprile 2007 alle 16:32:21 Profilo - pradellaInvia un messaggio privato Rispondi quotando
Se vuoi per impaginare io uso questa sub che non mi ricordo dove ho trovato...

Sub DisplayFormPoli()
Dim oCn, oRs, SQL, iLine, iPageSize, iPageCount, iPageCurrent, strOrderBy, iRecordsShown, i
iPageSize = 4

If Request.QueryString("page") = "" Then
iPageCurrent = 1
Else
iPageCurrent = CInt(Request.QueryString("page"))
End If
If Request.QueryString("order") = "" Then
strOrderBy = "id"
Else
strOrderBy = Request.QueryString("order")
End If

Set oCn = Server.CreateObject("ADODB.Connection")
oCn.Open "driver={Microsoft Access Driver (*.mdb)};dbq=" & server.mappath("/mdb-database/*.mdb")
Set oRs = Server.CreateObject("ADODB.Recordset")
SQL = "SELECT * FROM feedback ORDER BY " & strOrderBy & " DESC;"
oRs.Open SQL, oCn, adOpenKeyset
oRs.PageSize = iPageSize
oRs.CacheSize = iPageSize
iPageCount = oRs.PageCount

If iPageCurrent > iPageCount Then iPageCurrent = iPageCount
If iPageCurrent < 1 Then iPageCurrent = 1
If iPageCount = 0 Then
Response.Write("Nessun record visualizzato!")
Else
oRs.AbsolutePage = iPageCurrent
iRecordsShown = 0
CreateTopTable "Form" , "Form"
Response.Write "<table cellspacing=""0"" cellpadding=""0"" width=""100%"">" & vbCRLF

Do While iRecordsShown < iPageSize And Not oRs.EOF
Response.Write "<tr border=""1"" class=""tableline1"">" & vbCRLF
Response.Write " <td>" & Server.HTMLEncode (oRs("record")) & "</td></tr>" & vbCRLF
Response.Write " <tr border=""1"" class=""tableline2""><td>" & Server.HTMLEncode (oRs("record2")) & "</td>" & vbCRLF
Response.Write "</tr>" & vbCRLF
Response.Write "<tr><td height=5 class=""tablelinemain""></td></tr>" & vbCRLF

iRecordsShown = iRecordsShown + 1
oRs.MoveNext
Loop
End If
Response.Write "</table>" & vbCRLF
%><p align="center">Pagina <%= iPageCurrent %> di <%= iPageCount %><br><%
If iPageCurrent <> 1 Then
%><a href="xxx.asp?page=<%= iPageCurrent - 1 %>&order=<%= Server.URLEncode(strOrderBy) %>"> Indietro</a>
<%
End If

For I = 1 To iPageCount
If I = iPageCurrent Then %>
<%= I %>
<%
Else
%>
<a href="xxx.asp?page=<%= I %>&order=<%= Server.URLEncode(strOrderBy) %>"><%= I %></a>
<%
End If
Next

If iPageCurrent < iPageCount Then
%><a href="xxx.asp?page=<%= iPageCurrent + 1 %>&order=<%= Server.URLEncode(strOrderBy) %>">Avanti</a>
<%
End If

CreateBottomTable ""

oRs.Close
Set oRs = Nothing
oCn.Close
Set oCn=Nothing

End sub
%>
mennella

Avanzato
Avanzato
155 Discussioni



Profilo - mennella
01 aprile 2007 alle 17:29:55 Profilo - mennellaInvia un messaggio privato Rispondi quotando
tentativi del genere li ho già provati, ma ci sono problemi di cursore e di compatibilità generale con il codice di aspnuke. io sto cercando di sviluppare uno strumento che sia perfettamente compatibvile con il resto del portale
---------------
Questi li ho fatti io! 8)
http://www.digirolamoeditore.com
http://www.sferaufficio.com
piosky_to2003

Esperto
Esperto
2291 Discussioni



Profilo - piosky_to2003
02 aprile 2007 alle 06:49:26 Profilo - piosky_to2003Invia un messaggio privato chat_silvio@hotmail.com Rispondi quotando
Modificato il 02 aprile 2007 alle 06:54:14

secondo me sbagli la query chiudendo la tonda dopo il limit

SELECT
[ALL | DISTINCT | DISTINCTROW ]
[HIGH_PRIORITY]
[STRAIGHT_JOIN]
[SQL_SMALL_RESULT] [SQL_BIG_RESULT] [SQL_BUFFER_RESULT]
[SQL_CACHE | SQL_NO_CACHE] [SQL_CALC_FOUND_ROWS]
select_expr, ...
[FROM table_references
[WHERE where_condition]
[GROUP BY {col_name | expr | position}
[ASC | DESC], ... [WITH ROLLUP]]
[HAVING where_condition]
[ORDER BY {col_name | expr | position}
[ASC | DESC], ...]
[LIMIT {[offset,] row_count | row_count OFFSET offset}]
[PROCEDURE procedure_name(argument_list)]
[INTO OUTFILE 'file_name' export_options
| INTO DUMPFILE 'file_name'
| INTO @var_name [, @var_name]]
[FOR UPDATE | LOCK IN SHARE MODE]]

in breve
SELECT campi
FROM Tabelle
WHERE filtro
LIMIT valori

tradotto
SELECT *
FROM tbl_Offerte
WHERE ( TitoloOfferta LIKE '%laser%' AND TitoloOfferta LIKE '%a4%' OR InfoOfferta LIKE '%laser%' AND InfoOfferta LIKE '%a4%') <<<<<<<<<<-chiusa
LIMIT 0, 20

---------------
Silvio Andrighetti Formaggini (Piosky) [lo]

http://www.roadrunners.to.it
Sito Prove
http://www.piosky.somee.com
msn : chat_silvio@hotmail.com
mennella

Avanzato
Avanzato
155 Discussioni



Profilo - mennella
02 aprile 2007 alle 12:45:11 Profilo - mennellaInvia un messaggio privato Rispondi quotando
niente da fare. ricordavo di avere fatto un tentativo del genre, am nel dubbio ho riprovato. l'errore è praticamente uguale. da premettere che senza il LIMIT tutto funziona perfettamente, solo che a volte ho pagine con centinaia di risultati. comunque, l'errore è questo:
ErroreSQL -2147217900: [Microsoft][Driver ODBC Microsoft Access] Errore di sintassi (operatore mancante) nell'espressione della query '( TitoloOfferta LIKE '%laser%' OR TitoloOfferta LIKE '%a4%' OR InfoOfferta LIKE '%laser%' OR InfoOfferta LIKE '%a4%' ) LIMIT 0, 20'.
SQL : SELECT * FROM tbl_Offerte WHERE ( TitoloOfferta LIKE '%laser%' OR TitoloOfferta LIKE '%a4%' OR InfoOfferta LIKE '%laser%' OR InfoOfferta LIKE '%a4%' ) LIMIT 0, 20



... comunque grazie, piosky [lo]
---------------
Questi li ho fatti io! 8)
http://www.digirolamoeditore.com
http://www.sferaufficio.com
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
02 aprile 2007 alle 16:46:42 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Modificato il 02 aprile 2007 alle 19:19:12

Se usi Access, l'istruzione LIMIT non è riconosciuta (LIMIT 1, 20 è un'istruzione per MySql), la visualizzazione di un N di recorsa con Access è richiamabile dall'istruzione TOP (che non funziona con MySql), ad esempio: SELECT TOP 20 FROM tabella WHERE....
mennella

Avanzato
Avanzato
155 Discussioni



Profilo - mennella
03 aprile 2007 alle 00:11:19 Profilo - mennellaInvia un messaggio privato Rispondi quotando
Ok, Dj, grazie... se ho ben capito, però (ho fatto un giretto sui vari forum) l'istruzione TOP non consente, come il LIMIT, una paginazione reale senza impegnare troppe risorse, non potendo dare un valore d'inizio.
quindi lascio così, per adess, tanto voglio passare ad SQL...

grazie, comunque [lo]
---------------
Questi li ho fatti io! 8)
http://www.digirolamoeditore.com
http://www.sferaufficio.com
piosky_to2003

Esperto
Esperto
2291 Discussioni



Profilo - piosky_to2003
03 aprile 2007 alle 08:11:17 Profilo - piosky_to2003Invia un messaggio privato chat_silvio@hotmail.com Rispondi quotando
Modificato il 03 aprile 2007 alle 08:12:40

Ti conviene sempre sviluppare codice standard che giri su qualsiasi database ( MySql o access indifferente)

specialmente se intendi rilasciare alla comunity qualche modulo, tipo il carrello ;)
---------------
Silvio Andrighetti Formaggini (Piosky) [lo]

http://www.roadrunners.to.it
Sito Prove
http://www.piosky.somee.com
msn : chat_silvio@hotmail.com
djveleno

Amministratore

Esperto
Esperto
1025 Discussioni



Profilo - djveleno
03 aprile 2007 alle 08:41:13 Profilo - djvelenoInvia un messaggio privato Rispondi quotando
Effettivamente l'istruzione TOP N non serve per paginare ma per estrarre un numero ben definito di records, così come non serve LIMIT in MySql, la paginazione va effettuata tramite script, altrimenti il risultato sarà che vedrai sempre quel numero di records e non un numero di records per pagina.
---------------
A lavare la testa ai somari, ci si rimette l'acqua e il sapone!

http://aspnuke208.somee.com/Default.asp

mennella

Avanzato
Avanzato
155 Discussioni



Profilo - mennella
03 aprile 2007 alle 14:21:17 Profilo - mennellaInvia un messaggio privato Rispondi quotando
io sto provando a creare un sistema stabile da rilasciare come modulo e sto cercando di utilizzare un codice più standard possibile. in access (se si eccettua il problema della paginazione della ricerca) il sistema sembra funzionare. sto ricomponendo un mod (avevo già fatto qualcosa del genere, ma i test on line mi hanno portato a riscrivere gran parte del codice)
Al momento il carrello è visibile sul sito http://www.sferaufficio.com e per funzionare, funziona. Fino a 10/15 utenti contemporanei regge, ma se si supera questo limite cominciano i problemi (Too may client task) e quindi per questo voglio passare ad sql ed anche cambiare server. tra l'altro, se qualcuno ha qualche suggerimento sulle caratteristiche di un server che possa reggere più o meno tranquillamente traffici consistenti, sarebbe gradito 8).
Una domanda su SQL. Ho scaricato tutti i tutorial e gli articoli che ho trovato e sto "studiando la lezioncina" ma prima di inziziare a "mettere mano" alla cosa volevo capire se, oltre alla trasformazione del dtabase, devo mettere mano seriamente anche al codice. Se ho ben capito, per quanto riguarda aspnuke in se, non ci sono particolari problemi, ma per quanto riguarda il codice che ho sviluppato io? avendo, in generale, ho usato soltanto codice derivato da strumenti aspnuke pensate che dovrebbe andare o ci sono differenze particolarmente sostanziali?

grazie :)
---------------
Questi li ho fatti io! 8)
http://www.digirolamoeditore.com
http://www.sferaufficio.com
 1  2  >>

Log in

Login
Password
Memorizza i tuoi dati:

Cerca

 

Sostieni AspNuke

Un piccolo gesto per aiutarci a mantenere AspNuke.it online

Promo

MusicWebItalia.it
Video Testi Traduzioni Spot Colonne sonore Accordi e Spartiti gratis.

Visitatori

Visitatori Correnti : 116
Membri : 0 offline Anna

Iscritti

 Utenti: 18940
Ultimo iscritto : glauco
Lista iscritti
Messaggi privati: 3373 Commenti: 2210 Immagini: 39 Downloads: 144 Articoli: 49 Pagine: 101 Siti web: 558 Notizie: 180 Sondaggi: 11 Preferiti: 5685361 Post sui forum: 51195 Libro degli ospiti: 4 Eventi: 7

Versioni

Temi