ho cercato di superare il problema attuando le modifiche:

al momento sono messo così:

codice:
' connessione
<%
	messaggio_id=request("messaggio_id")
	
	Set rs = Server.CreateObject("ADODB.Recordset")
	if request("last_mx")="1" then
	strSQL="SELECT top 1 * FROM messaggeria WHERE attiva=on and tMessaggi.idpren="& request("idpren")&"  ORDER BY messaggio_id DESC"
	rs.open strsql, objConn
	
'riceviamo le informazioni:
'ID del record di partenza
Dim ID
ID = rs("messaggio_id")
  
'direzione di spostamento (prev o next)
Dim Direction
Direction = Request.QueryString("Direction")
  
'apriamo la connessione al db:
  
'ricaviamo l'ID minimo e l'ID massimo
Dim RSMaxMin, sSQL, min, max
sSQL = "SELECT MIN(messaggio_id), MAX(messaggio_id) FROM messaggeria"
Set RSmaxMin = objConn.Execute(sSQL)
min = RSMaxMin(0)
max = RSMaxMin(1)
Set RSmaxMin = Nothing

'impostiamo la query di selezione record a seconda della direzione
Select Case Direction
  Case "next"
    sSQL = "SELECT TOP 1 messaggio_id " & _
           "FROM messaggeria " & _
           "WHERE messaggio_id > " & rec("messaggio_id")
  Case "prev"
    sSQL = "SELECT TOP 1 messaggio_id " & _
           "FROM messaggeria " & _
           "WHERE messaggio_id > " & rec("messaggio_id") & _
           " ORDER BY id DESC"
  
End Select
  
'estraiamo il record richiesto
Dim Rec
Set Rec = objConn.Execute(sSQL)


'recuperiamo i dati
Dim fieldID, oggetto, data,ora,corpo
fieldID = Rs("messaggio_id")
oggetto = Rs("messaggio_oggetto")
data =    Rs("messaggio_data")
ora =     Rs("messaggio_ora")
corpo=    Rs("messaggio_corpo")

 
'chiudiamo la connessione e liberiamo memoria
Set Rec = Nothing
objConn.Close
Set Conn = Nothing

else

strSQL="SELECT * FROM tMessaggi WHERE  messaggio_id="& request("messaggio_id")	
rs.open strsql, conn
end if
%>

mostra record

<%
if request("last_mx")="1" then
If min < fieldID Then
  Response.Write "<a href=""?direction=prev&ID=" & fieldID & """>" & _
                 "<< Precedente</a>" & VBCrLf
End If

If max > fieldID Then
  Response.Write ">" & VBCrLf
End If
  
Response.Write "</body></html>" & VBCrLf
end if
%>
nel caso in cui
if request("last_mx")="1" then
i link precedente e successivo mi danno come id=46 entrambi.
quando il record corrente è il id=46

quindi non lavora...