15 messaggi dal 03 novembre 2003
Ho scritto una pagina con paginazione. quando provo ad andare sulle pagine successive mi viene segnalato l'errore:

Tipo di errore:
ADODB.Recordset (0x800A0BCD)
Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.

il codice della mia pagina è:

<%
cliente = Request.QueryString("cliente")
datainizio = FormatDateForDB(Request.Form("datainizio"))
datafine = FormatDateForDB(Request.Form("datafine"))
ragsoc = Request.QueryString("ragsoc")
Oreannuali = Request.QueryString("Oreannuali")
Residuo = Request.QueryString("Residuo")

Response.write "Rapporti tecnici per la societ&agrave:&nbsp;"
Response.write ragsoc
Response.write "<br>&nbsp;dal&nbsp;"
Response.write ItDate(datainizio)
Response.write "&nbsp;al&nbsp;"
Response.write ItDate(datafine)
Response.write "<br><br><br>"
%>
<br>
<br>
</font></b>
<table width="483" border="0" cellpadding="0" cellspacing="0">
<tr>
<td height="32"><img src="images/menu2_1.gif" width="506" height="100%" border="0" usemap="#Map">
</td>
</tr>
<tr>
<td class=bordo height="200"> <br>
<table width='90%' border="0" align="center" cellpadding='1' cellspacing='1' class=table>
<%
'Creo la connessione al database
Dim Conn, strConn, sql, rs, pag, indice_inizio, indice_fine, link, i, intSfondo1,intSfondo2, intTesto1,intTesto2, intVolta, intlink, cliente, ragsoc, datainizio, datafine, Oreannuali, Residuo
intVolta="0"
If Session("login") then
strConn = Application("dbconn")
Set Conn = Server.CreateObject("ADODB.Connection")
Conn.Open strConn
pag = TRIM(Request.QueryString("pag"))
If pag="" Then
pag = 1
Else
pag = CInt(pag)
End If
'Creiamo la stringa sql
sql = "SELECT * FROM interventitesta WHERE interventitesta.Cliente='" & cliente & "' AND interventitesta.Data BETWEEN datevalue('" & datainizio & "') AND datevalue('" & datafine & "') order BY interventitesta.Data DESC"
Set rs = Server.CreateObject ("ADODB.Recordset")
'Settiamo il numero di record per pagina
rs.PageSize = 3
rs.Open sql, conn, 3, 3
rs.AbsolutePage = pag
For i=1 to rs.PageSize
if intVolta="1" then
intVolta=""
intTesto1="white"
intSfondo1="#3253fa"
intTesto2="navy"
intsfondo2="#e2e2e2"
else
intVolta="1"
intTesto1="white"
intSfondo1="#3253fa"
intTesto2="navy"
intsfondo2="#e2e2e2"
end if
%>
<tr bgcolor=<%=intSfondo1%>>
<td width="50%" >
<div align="left"><font color=<%=intTesto1%>>Giorno: <%= rs("Data") %>
</font></div>
</td>
<td width="50%">
<div align="right"><font color=<%=intTesto1%>>dalle ore: <%=rs("dalle")%>
alle ore: <%=rs("alle")%></font></div>
</td>
</tr>
<tr bgcolor=<%=intSfondo2%>>
<td colspan="2">
<div align="left"><font color=<%=intTesto2%>>Tecnico: <%= rs("tecnico") %></font></div>
<div align="right"><font color=<%=intTesto2%>></font></div>
</td>
</tr>
<tr bgcolor=<%=intSfondo2%>>
<td colspan="2"><font color=<%=intTesto2%>><br>
<%=rs("descrizione")%><br>
<br>
</font></td>
</tr>
<tr bgcolor=<%=intSfondo2%>>
<td colspan="2">
<div align="right"><a href='dettagli.asp?idint=<%=rs(8)%>&cliente=<%=cliente%>&ragsoc=<%=ragsoc%>&data=<%=rs("data")%>'><font color="<%=intTesto2%>">Clicca
qui per i dettagli</font></a></div>
</td>
<tr bgcolor=<%=intSfondo2%>>
<td colspan="2"><font color=<%=intTesto2%>>
<%
if rs("incontratto")=1 then
response.write "Ore in contratto"
else
response.write "Ore non in contratto"
end if
%>
</font> </td>
</tr>
<tr bgcolor="transparent">
<td colspan="2">
<hr width="100%">
</td>
</tr>
<%
rs.MoveNext
If rs.EOF Then Exit For Next
%>
</table>
<table class= table width="90%" border="0" cellpadding="0" cellspacing="0" align="center">
<tr>
<td>
<%
Response.Write ("<hr color=navy>")
If ( pag > 1) Then
Response.Write("<b><a href=""rapportini.asp?cliente=" &cliente& "&ragsoc=" &ragsoc& "&datainizio=" &datainizio& "&datafine=" &datafine&"&pag=" &pag-1& """><< Prec.&nbsp;&nbsp;</a></b>")
End If
If ( pag < rs.PageCount ) Then
Response.Write("<b><a href=""rapportini.asp?cliente=" &cliente& "&ragsoc=" &ragsoc& "&datainizio=" &datainizio& "&datafine=" &datafine&" &pag=" &pag+1& """>Succ. >></a></b>")
End If
%>
</td>
</tr>
<tr>
<td><br>
Pagina
<%response.write(pag)%>
di
<%response.write (rs.Pagecount)%>
</td>
</tr>
</table>
<br>
</td>
</tr>
</table>
2.584 messaggi dal 14 maggio 2001
Dove inizia e dove finisce il ciclo For - Next?
Che riga ti dà errore?
ricordati che se sei a eof=True (dopo il movenext) e richiedi il recordcount o un campo il codice ti restituisce errore...
15 messaggi dal 03 novembre 2003
La linea di errore è la 74 ovvero:

rs.AbsolutePage = pag

il ciclo inizia subito dopo questa riga in cui mi segnala l'errore.

Non è posssibile che sia un errore dovuto al passaggio dalle date? Perchè se utilizzzo la stessa paginazione senza passare le date lo script funziona.

Ti prego dammi una dritta perchè sto impazzendo.
2.584 messaggi dal 14 maggio 2001
Se l'errore te lo dà lì e perché il recordset è vuoto (cioè a EOF=True)
Devi inserire un controllo per dirgli di svolgere tutto il codice se ci sono record altrimenti visualizzi una frase del tipo "Non ci sono record - rieseguire la query"

Se secondo te ci sono dei record e per come viene formattata la data...
se un utente inserisce 03/11/2003 e tu prendi la data con request.form devi poi metterla nella query Sql con:
...& day(TuaData) & "/" & month(TuaData) & "/" year(TuaData) &...
Altrimenti te la interpreta come 11/03/2003

Ancora una cosa... se non sbaglio per le performance ti conviene usare <= e >= rispetto al between
15 messaggi dal 03 novembre 2003
Per quanto riguarda la data ho scritto uno script affinchè venga interpretato bene dal database. Il problema me lo da solo quando vado sulle pagine successive alla prima. Cosa ne pensi?

Quale protrebbe essere il codice da inserire?
Modificato da foxdie il 03 novembre 2003 12.25 -
2.584 messaggi dal 14 maggio 2001
Quando vai alla seconda pagina come ti passi i vari parametri come la data ecc...
stamati a video la query per vedere se passando da una pagina all'altra i campi rimangono valorizzati...

Il controllo da inserire è qualcosa del tipo:
rs.Open sql, conn, 3, 3
If rs.eof=True Then
response.write "Nessun record"
Else
rs.AbsolutePage = pag
'tutto il tuo codice
End If
</body>
</html>
15 messaggi dal 03 novembre 2003
Quando metto il controllo che hai detto quando vado sulla seconda pagina mi dice che non ci sono record e non mi scrive neanche la query.

le date però vengono tutte sballate dato che mi segnala "dal 30/12/1899 al 30/12/1899" cosa faccio hai qualche suggerimento?
2.584 messaggi dal 14 maggio 2001
Come inserisci le date nella select?
il problema direi che è proprio sul formato delle date....

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.