Salve a tutti!

Sto realizzando una pagina ASP che mi consenta di "paginare" i Record in Output di una Query..
Il DataBase che purtroppo sono costretto ad utilizzare è realizzato in Microsoft Access 2000..

Avevo dunque ben pensato di costruirmi un mini-algoritmo per la paginazione ricavando il numero di pagina attuale (tramite querystring), il numero di pagine da allocare (tramite una SELECT COUNT(*)) e mandare in pasto all'SQL una bella Query di questo tipo:

codice:
Sql = "SELECT * FROM Cie ORDER BY cognome LIMIT " & inizio & ", " & offset & ";"
tuttavia con estremo TERRORE ho appena scoperto che l'MSSQL non dispone dell'istruzione LIMIT nella sua sintassi e che l'unica istruzione ad essa più vicina è la
codice:
SELECT TOP n
Tale istruzione però non fa al caso mio, oltre a selezionare le Tuple sempre a partire dalla prima ha anche l'enorme difetto di non "limitare" la selezione alla n-esima riga in presenza della Clausola ORDER BY!!! VVoVe:

In pratica nel mio caso se uso SELECT TOP 2 mi restituisce le prime 4 tuple perchè nelle tuple numero 2, 3 e 4 il cognome è il medesimo..

A questo punto ho provato a pensare alla soluzione più "sporca" travasando l'intero RecordSet in un Array BiDimensionale (matrice) con lunghezza dinamica (che ricavo tramite il Count(*) della query)

Tuttavia se dichiaro così l'Array:
codice:
Dim arrayRecord(numtotale)(campi)
mi da un errore dicendo che ha bisogno di costanti intere nella dichiarazione...

Se la provo in maniera brutale:
codice:
Dim arrayRecord(2000)(2000)
Mi dice Errore di compilazione di Microsoft VBScript (0x800A0401)
Prevista fine istruzione

A questo punto sono in preda alla disperazione più totale

Vi prego di aiutarmi.. come posso dichiarare l'Array? esiste un'alternativa al LIMIT in MSSQL???
Vi prego ditemi di si...