Non ci siamo capiti..
rs(0) non ti serve....
Tu devi visualizzare, non contare!!!!

La order by, nonostante il TOP 30 non si ferma al 30° record perché gli ID attravero i quali ordini è sono gli stessi con i quali confronti.. Devi aggiungere un campo nell'order by...
Ad esempio, ma è solo un esempio:

codice:
sqlcount = "SELECT TOP 30 * FROM Messaggio where ID='" & rsM("id")& "' ORDER BY id, data"
Set RScounts = Conn3.Execute(sqlcount)
Roby