Buongiorno!
Allora diciamo che ho provato e ci sono quasi riuscito ma ho 2 problemini...ho mischiato un po di codice mio e un po di un esempio postato nei tutorial del sito...i problemi sono due:
Il Primo è QUESTO:
ADODB.Recordset error '800a0cb3'
Current Recordset does not support bookmarks. This may be a limitation of the provider or of the selected cursortype.
/it/prova.asp, line 39
Dove la linea 39 è --->>> rs.AbsolutePage = pag
togliendolo funziona però nonostante tutto funzioni alla perfezione mi da infinite pagine con sempre gli stessi risultati....:hammer:
Questo è il codice della pagina prova.asp che uso....
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim cn, rs, quanti, pag, contatore
' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
' APRO LA CONNESSIONE COL DATABASE
cn.Open str_cn
' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
quanti = 2
' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>
<table align="center" width="300" border="1">
<%
Dim SQL ' Creo la query SQL
SQL = "SELECT * FROM tabella WHERE nome = 'mario' ORDER BY 'nome' ASC"
' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.Open sql, cn
rs.AbsolutePage = pag
rs.PageSize = quanti
' ESEGUO IL CICLO
While rs.EOF = False And contatore < quanti
%>
<tr><td><%=rs("nome")%></td></tr>
<%
rs.MoveNext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
Wend
%>
</table>
<p align="center">
<%If pag > 1 Then%>
<a href="prova.asp?pag=<%=pag-1%>">Indietro</a>
<%End If%>
<%
Dim x
x = 1
For x = 1 To rs.PageCount
If CInt(pag) <> x Then
%>
[<a href="prova.asp?pag=<%=x%>"><%=x%></a>]
<%
Else
%>
[<a href="prova.asp?pag=<%=x%>"><b><%=x%></b></a>]
<%
End If
Next
%>
<%If rs.EOF = False Then%>
<a href="prova.asp?pag=<%=pag+1%>">Avanti</a>
<%End If%>
</p>
</body>
</html>
<%
' UN PO DI PULIZIA...
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Dovrebbe essere proprio un errore riguardante i cursori ma come devo infilarli?
---allora ho provato un po e ora infilando il cursore 3 funziona ma mi da un errorino ovvero è come se poi nn leggesse piu dopo aver scritto il primo dato ma mi crea cmq tutti i numeri di pagina per visualizzare gli altri risultati che pero nn appaiono.....idemo per il tasto avanti che nelle altre pagine non viene piu visualizzato.... questo è la prova che ho fatto....dove sbaglio???
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim cn, rs, quanti, pag, contatore
' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
' APRO LA CONNESSIONE COL DATABASE
cn.Open str_cn
' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
quanti = 1
' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = Request.QueryString("pag")
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>
<table align="center" width="300" border="1">
<%
Dim SQL ' Creo la query SQL
SQL = "SELECT * FROM dati"
' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.Open sql, cn, 3
rs.AbsolutePage = pag
rs.PageSize = quanti
' ESEGUO IL CICLO
While rs.EOF = False And contatore < quanti
%>
<tr><td><%=rs("nome")%></td></tr>
<%
rs.MoveNext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
Wend
%>
</table>
<p align="center">
<%If pag > 1 Then%>
<a href="prova.asp?pag=<%=pag-1%>">Indietro</a>
<%End If%>
<%
Dim x
x = 1
For x = 1 To rs.PageCount
If CInt(pag) <> x Then
%>
[<a href="prova.asp?pag=<%=x%>"><%=x%></a>]
<%
Else
%>
[<a href="prova.asp?pag=<%=x%>"><b><%=x%></b></a>]
<%
End If
Next
%>
<%If rs.EOF = False Then%>
<a href="prova.asp?pag=<%=pag+1%>">Avanti</a>
<%End If%>
</p>
</body>
</html>
<%
' UN PO DI PULIZIA...
rs.Close
Set rs = Nothing
cn.Close
Set cn = Nothing
%>
Ci avevo già pensato e per scrupolo l'ho appena fatto...ma niente...non va...è come se lo facesse...ovvero crea molte pagine (1-2-3-4-5..) ma solo la prima contiene il dato le altre le fa vedere vuote...e se ad esempio aumento i dati (records)da visualizzare per pagina la prima è sempre compilata bene le altre sempre vuote...Io nn riesco a capire...sono sicuro che il broblema è nei cursori ma purtroppo conoscendoli da poco tempo davvero non so come muovermi! Dove sarà l'errore?! :crying: Sicuramente è un errore da niente ma proprio per questo forse difficile per me da trovare!!
' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
pag = cLng(Request.QueryString("pag"))
If IsNumeric(pag) = False Or pag < 1 Then pag = 1
:crying: non so come dirtelo...:incazz: non funge neanche cosi sto bastardaccio!:incazz2:
Sto perdendo le speranze....eppure penso che funzioni a molti questo script... Tranne a me!
Ti ringrazio per l'ennesima volta per il grande supporto che mi stai dando compreso quello morale perche ora sbatterei volentieri la capoccia al muro
Cmq ritornando al problema ho infilato la parte di codice che mi hai detto ma non è cambiato nulla...sempre lo stesso problema....
Non saprei allora, anche perchè non ho tempo di provare il tuo script ed analizzarlo per bene
Fai così, azzera tutto, riscrivi il codice tutto da capo, copiandolo pari pari dall'esempio del tutorial, senza cambiarlo di una virgola!
Se non funziona vuol dire che c'è qualche problema che non riguarda il codice
We ciao...
senti questa alternativa sembra funzionare per il momento...
tu che ne pensi? è un alternativa valida?
<%@LANGUAGE = VBScript%>
<!--#include file="connessione.asp"-->
<%
' DEFINISCO LE VARIABILI CHE MI SERVONO PER L'APPLICAZIONE
Dim cn, rs, quanti, pag, contatore
' Creo un'istanza per la connessione ed una per il Recordset
Set cn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
' APRO LA CONNESSIONE COL DATABASE
cn.Open str_cn
' DEFINISCO IL NUMERO DI RECORD DA VISUALIZZARE PER OGNI PAGINA
RecordsXPagina = 6
' RECUPERO IL NUMERO DI PAGINA CORRENTE
' E CONTROLLO CHE NON SIA INFERIORE A 1
If Request.QueryString("pagina") = "" Then
pagina = 1
Else
pagina = CInt(Request.QueryString("pagina"))
End If
' IMPOSTO UN CONTATORE
contatore = 0
%>
<html>
<head>
<title>Paginazione dei risultati di query molto lunghe in ASP</title>
<style>a { color: blue; }</style>
</head>
<body>
<table align="center" width="300" border="1">
<%
Dim SQL ' Creo la query SQL
SQL = "SELECT * FROM dati"
' EFFETTUO MATERIALMENTE LA PAGINAZIONE
rs.Open sql, cn, 3,3
if not RS.eof then
RS.PageSize = RecordsXPagina
RS.AbsolutePage = pagina
For i = 1 to RecordsXPagina
if not RS.eof then
%>
<tr><td><%=rs("nome")%> </td></tr>
<%
RS.movenext
' INCREMENTO IL VALORE DEL CONTATORE
contatore = contatore + 1
end if
next
Response.Write "<b><br>Numero Pagine:</b> "
For pagina = 1 to RS.PageCount
Response.Write "<A href='"&istring&"?pagina=" & pagina
Response.write "'>"
Response.write "<font size=1 color=#000080>"
Response.Write pagina
Response.Write "</A> "
Next
Response.Write ">><br><br></td></tr>"
rs.Close
Set rs = Nothing
Cn.Close
Set Cn = Nothing
end if