Newsgroup: it.comp.www.asp
Titolo: leggere i record di un DB dall'ultimo verso il primo

In questo script mi connetto ad un database di commenti riguardo ad un
gioco,
in questo modo io leggo i record dall'ultimo verso il primo, facendo in modo
che i messaggi vengano visualizzati dal più recente al più vecchio.
Il problema è strano:
lo script estrae i record proprio nell'ordine in cui voglio io, e mi stampa
tutti i dati che mi interessano dal più recente al più vecchio.
alla fine della pagina però mi compare questo errore:
****************************************************************************
************
ADODB.Field errore "80020009'
Il record corrente corrisponde all'inizio o alla fine del file oppure è
stato eliminato. Per eseguire l'operazione richiesta dall'applicazione è
necessario disporre di un record corrente.
?
****************************************************************************
************
Da cosa è causato questo errore,  perchè se estraggo i record dal primo
verso l'ultimo fila tutto liscio come l'olio e così no?
Ecco il listato
Grazie anticipatamente
CINCI
<%@ Language=VBScript %>
<!--#include file="adovbs.inc"-->
<!--#include file="connection.asp"-->
<%
  dim objRS
  set objRS = Server.CreateObject("ADODB.Recordset")
  objRS.Open "commenti", objConn, adOpenDynamic, adlockOptimistic,
adCmdTable
%>
<p>&nbsp;</p>
<table width="500" border="0" height="250">
  <%objRS.MoveLast%>
  <%do while not objRS.EOF %>
  <tr>
    <td height="31" width="31%"><font face="Arial, Helvetica, sans-serif"
size="4"><%=objRS("Data")%></font></td>
    <td height="31" width="69%" valign="middle"><font face="Arial,
Helvetica, sans-serif" size="4"><b><%=objRS("Nome")%></b></font></td>
  </tr>
  <tr>
    <td height="146" width="31%">&nbsp;</td>
    <td height="146" width="69%" valign="top"><font size="3" face="Arial,
Helvetica, sans-serif"><i><%=objRS("Commento")%></i></font></td>
  </tr>
<%
  objRS.MovePrevious
  loop
%>
<%
  objRS.Close
  Set objRS = Nothing
  objConn.Close
  Set objConn = Nothing
%>
</table>

  <%do while not objRS.EOF %>
<ZAP>
Tu fai un MOVELAST, quindi ti trovi IN FONDO al recordset, ma poi
verifichi EOF, cioe' FINE DEL RECORDSET, mentre ti muovi verso il
PRINCIPIO del recordset. Ergo, non raggiungerai MAI la fine del
RS ma raggiungeria il PRINCIPIO (BOF).
I casi sono due: o "inverti" il recordset (usando ORDER BY) e
leggi il recordset "nel senso giusto" (senza MoveLast), oppure
verifichi BOF invece di EOF.
Davide

perchè non controlli se il recordset è arrivato all'inizio.
<p>&nbsp;</p>
<table width="500" border="0" height="250">
<%
objRS.MoveLast
If Not objRS.bof Then
    do while not objRS.EOF
%>
[cut]
<%
    objRS.MovePrevious
    loop
end if
%>
ciao
--
Kappa
kappa**nospam**@
webngo.net
www.webngo.net

Usando il objRS.MovePrevious la condizione di uscita è
"do while not objRS.BOF".
Cioè devi testare di essere arrivato al'inizio del DB
e non alla fine.
Ciao.
=====
cnc
______________________________________________________________________
Do You Yahoo!?
Il tuo indirizzo gratis e per sempre @
yahoo.it
 su 
http://mail.yahoo.it
-- 
Posted from 
web4005.mail.yahoo.com
 [216.115.104.39] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG