Salve a tutti,
ho trovato del codice su di un sito per fare la paginazione efficiente con le pagine ASP ma in fase di compilazione mi da un errore. Questo è il codice:
L'errore che mi ritorna il server è :codice:<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd"> <html> <head> <title>Sans Titre</title> <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" /> <meta name="generator" content="HAPedit 3.1"> </head> <body bgcolor="#FFFFFF"> <% Set objRecordset = Server.CreateObject("ADODB.Recordset") ' modificare il path per puntare correttamente al database strConnection = "Provider=Microsoft.Jet.Oledb.4.0;data source=" & server.mappath("database.mdb") ' numero di record che vogliamo mostrare per pagina ? utilizziamo una costante CONST RECORDMAX = 10 ' controlla se sia stato passato il parametro <page>, cioè il numero di pagina If Request.QueryString("page").Count > 0 Then intPageNum = CInt(Request.QueryString("page")) Else intPageNum = 1 'non è stato passato, di default iniziamo dalla prima pagina End If With objRecordset ' il seguente è il tipo di cursore più performante ? non possiamo però utilizzare la proprietà RecordCount (poco importa, non ci serve in questa sede?) .CursorType = adOpenForwardOnly ' la localizzazione del cursore di default è lato server, noi la spostiamo sul client .CursorLocation = adUseClientBatch ' il tipo di Lock più performante .LockType = adLockReadOnly ' creiamo un buffer di memoria locale - dove verranno stipati i record - uguale a RECORDMAX .CacheSize = RECORDMAX .PageSize = RECORDMAX .Source = "SELECT * FROM tabella" .ActiveConnection = strConnection .Open ' eseguiamo la Query ' questo è importante: disconnettiamo il Recordset dalla sorgente dati (cioè il database). ' Uno dei maggiori vantaggi è dato dalla scalabilità: per 100 utenti che "scorrono" le pagine, ' non ci saranno altrettante connessioni e cursori aperti sul server. Per 1000 utenti idem. Set .ActiveConnection = Nothing intTotalPages = .PageCount If NOT .EOF then ' questo è importante: grazie al metodo GetRows dell'oggetto Recordset recuperiamo ' SOLTANTO il numero di record necessari per la pagina e li stipiamo in un array. .AbsolutePage = intPageNum arrData = .GetRows(RECORDMAX) intColsTot = Ubound(arrData,1) ' numero di colonne, cioè di campi intRowsTot = Ubound(arrData,2) ' numero di righe, cioè di records End If End With ' Rilasciamo le risorse objRecordset.Close:Set objRecordset = Nothing ' Questo ciclo mostra il contenuto dei campi di ciascun record ' ovviamente va adattato e reso meno "spartano" (è qui solo per esempio) For i = 0 To intRowsTot Response.Write " " For j = 0 To intColsTot Response.Write " "&arrData(j, i) Next Next 'Pagina precedente ? mostra una freccia a sinistra Response.Write " " If intPageNum > 1 Then Response.Write( "<-- ") End If 'Mostra la pagina corrente in BOLD (non cliccabile) + tutte le altre (cliccabili) For i = 1 to intTotalPages If i = intPageNum Then Response.Write(" "&i&"") Else Response.Write(" "&i&"") End If Next ' Pagina successiva ? mostra una freccia a destra If intPageNum < intTotalPages Then Response.Write( " -->") End If %> </body> </html>
ADODB.Recordset (0x800A0BB9)
Gli argomenti non sono di tipo valido, non sono compresi nell'intervallo consentito o sono in conflitto.
/ASP/ripasso/paginazione/paginazione.asp, line 28
dove la riga 28 è
Ho provato anche con adUseClient ma mi da lo stesso errore sapreste dirmi perchè da errore? Graziecodice:.CursorLocation = adUseClientBatch![]()

Rispondi quotando