Newsgroup: it.comp.www.asp
Titolo: Impaginazione che non funziona - Help!!!

Buongiorno e grazie per aver aperto questo messaggio
Ho realizzato una pagina .asp prendendo spunto da quella presente sul
sito 
www.asp-it.com
 (esempio di paginazione) adattandola alle mie
esigenze (query personalizzata).
Però non mi funziona al 100%: quando mi arriva all'ultima pagina con
meno di 5 risultati (è stata settata per avere 4 record per pagina) mi
dà errore (ADODB.Field error '80020009'  No current record. ) . Mi pare
che l'errore sia perchè non esistono più record da visualizzare (ad
esempio la query mi ha trovato 12 record nel database, le prime due
pagine - di 5 record ciascuna - vanno bene ma la terza pagina che
dovrebbe contenere solo gli ultimi 2 record dà l'errore).
Cosa manca o cosa ho sbagliato nel codice asp?
Spero che ci sia qualcuno che mi possa suggerire la soluzione... :-)
Grazie e auguri al newgroup!
Marco
in...@hotbot.com
P.s.- qui vi scrivo il codice della mia pagina asp:
<HTML>
<HEAD>
<TITLE>Database</TITLE>
</HEAD>
<BODY BACKGROUND="images/cactxtr.gif" LINK="#800000" VLINK="#008040">
<% PRESSO=request("PRESSO")%>
<% REGIONE=request("REGIONE")%>
<% PROVINCIA=request("PROVINCIA")%>
<center>
<FORM ACTION="/
hfnet.it/
 ........ " METHOD=POST>
<div align="center">
  <center>
<TABLE WIDTH=600 BORDER=0 cellpadding="4" center>
<%
Select Case Request.QueryString("Direzione")
Case ""
Session("paginaCorrente") = 1
Case "Avanti"
Session("paginaCorrente")= Session("paginaCorrente") + 1
Case "Indietro"
Session("paginaCorrente")= Session("paginaCorrente") - 1
End Select
Const adOpenKeyset = 1
dim conn
dim rs
Set conn = Server.CreateObject("ADODB.Connection")
Set rs = Server.CreateObject("ADODB.Recordset")
conn.open "
hfnet.it
"
SQL = "SELECT * FROM Freedata WHERE PRESSO LIKE '%"&PRESSO&"%' AND
(REGIONE LIKE '%"&REGIONE&"%' AND (PROVINCIA LIKE '%"&PROVINCIA&"%' "
rs.Open sql, conn, adOpenKeyset
rs.PageSize = 4
rs.AbsolutePage = CLng(Session("PaginaCorrente"))
%>
<%= TornaRic %>
<align="center"><font face="Arial" size="2"><b>
<%
Dim rsTotalRecords
stmSQL = "SELECT COUNT(*) FROM Freedata WHERE PRESSO LIKE '%"&PRESSO&"%'
AND (REGIONE LIKE '%"&REGIONE&"%' AND (PROVINCIA LIKE '%"&PROVINCIA&"%'
" & tmpSQL
Set rsTotalRecords = Conn.Execute(stmSQL)
%>
<% If rs.PageSize > rsTotalRecords(0) then
rs.PageSize=rsTotalRecords(0)%>
<% If rsTotalRecords(0)> 0 then %>
Trovati <%=rsTotalRecords(0)%> documenti.
<% Else %>
Nessun documento trovato. Riprova con un'altra ricerca.
<P>
<% End If %>
Questa è la pagina <%=Session("paginaCorrente")%> di <%=rs.PageCount%>
</b></font><p>
<table border="0" width="100%" cellspacing="0" cellpadding="0">
<%
Dim i
For i = 1 To rs.PageSize
%>
<TR>
 <TD BGCOLOR="#F7EFDE" ALIGN=left valign="top" width="300">
 <FONT STYLE="ARIAL NARROW" SIZE=1><b>
 <%= rs("PRESSO") %> </b>
 <P>
 <%= rs("VIA")%> <br>
 <%= rs("CAP")& "  " %><%= rs("CITTA")& "   (" %><%= rs("PROV")& ")"
%><br>
 Tel. <%= rs("TELE")%> - Fax <%= rs("NUM_FAX")%>
 <P> </TD>
<%
rs.MoveNext
Next
%>
</table>
</center>
</center>
</form>
</table>
&nbsp;
</center>
<table border="0" width="600" cellspacing="0" cellpadding="5">
  <tr>
    <td width="33%">
<p align="left">
<% If CLng(Session("PaginaCorrente")) > 1 Then %>
<a href="risultati.asp?Direzione=Indietro&
PRESSO=<% =request("PRESSO")%>&
REGIONE=<% =request("REGIONE")%>&
PROVINCIA=<% =request("PROVINCIA")%>
">Pagina Precedente</a>
<%End If%>
</p>
</td>
<center>
    <td width="33%">
    </td>
</center>
    <td width="34%">
<p align="right">
<% If CLng(Session("PaginaCorrente")) < rs.PageCount Then %>
<a href="risultati.asp?Direzione=Avanti&
PRESSO=<% =request("PRESSO")%>&
REGIONE=<% =request("REGIONE")%>&
PROVINCIA=<% =request("PROVINCIA")%>
">Pagina successiva</a>
<%End If%>
</p>
</td>
  </tr>
</table>
</div>
</BODY>

ad una prima occhiata del codice, dovrebbe bastare un controllo EOF
all'interno del ciclo FOR...NEXT prima dei vari RS.
Gaetano Minardi
G.M. Internet & Service Provider Niscemi
Circuito Cities On Line
http://www.gmonline.it
gmin...@ctonline.it
postm...@gmonline.it
Tel. +39 933 959180
ICQ #42118828
--
Posted from 
mail.ctonline.it
 [212.34.192.7]
via Mailgate.ORG Server - 
http://www.mailgate.org

%>
Questo codice da' per scontato che tu abbia rs.PageSize record da
visualizzare.
Sostituisci questi due pezzi di codice con i seguenti:
<%
Dim i
i = 0
While (i < rs.PageSize and not rs.EOF)
%>
[...]
<%
rs.MoveNext
i = i + 1
Wend
%>
Ciao
Stefano