Newsgroup: it.comp.www.asp
Titolo: Perche' NS e IE si comportano diversamente ???

Ciao,
ho scritto un .asp con la funzione di semplice motore di ricerca. Per
dividere i risultati su piu' pagine avevo prima scritto un mio codice che
faceva scorrere a "vuoto" tutto il database in base ai valori delle
variabili "PageNumber" e "LinksPerPage" andati a pescare tra le variabili
postate.
Il mio codice funzionava alla perfezione, poi pero' vedendo che i due autori
della MS, nel loro libro sull'ASP, usavano le proprieta' .PageSize e
.AbsolutePage ho deciso di creare una pagina ibrida, usando parte del mio
codice e parte del loro. (anche perche' per fare un esempio quei due
"geniacci" della MS, non hanno neppure considerato il fatto che il numero
dei risultati della query non e' sempre un multiplo del numero dei risultati
per pagina...)
Ok. cmq ecco la parte fondamentale del mio codice:
**********
' a MainSQL assegno Session("MySQL")
' se essa contiene gia' qualcosa
' altrimenti vuol dire che arrivo
' dalla form del motore di ricerca
' e mi costruisco al momento la MainSQL
' che poi assegno a Session("MySQL")
.....
LinksPerPage = CLng(Request.Form("linksperpage_"))
PageNumber = CLng(Request.Form("pagenumber_"))
.....
Set OBJdbConnection = Server.CreateObject("ADODB.Connection")
OBJdbConnection.Open "DatabaseRegistrato", "", ""
Dim MainRS
Set MainRS = Server.CreateObject("ADODB.Recordset")
MainRS.PageSize = LinksPerPage
MainRS.Open MainSQL, OBJdbConnection, 1 '<-- RIGA CHE MI DA ERRORE !!!
....
MainRS.AbsolutePage = PageNumber
....
<%
If PageNumber > 1 Then
%>
<FORM METHOD="post" ACTION="file.asp">
<INPUT TYPE="hidden" NAME="linksperpage_" value="<% = LinksPerPage %>">
<INPUT TYPE="hidden" NAME="pagenumber_" value="<% = PageNumber-1 %>">
<INPUT TYPE="submit" VALUE="...Previous Page">
</FORM>
....
' <-- QUI INSERISCO TUTTA LA TABELLA CON I DATI.
...
<%
If Not(MainRS.EOF) Then
%>
<FORM METHOD="post" ACTION="file.asp">
<INPUT TYPE="hidden" NAME="linksperpage_" value="<% = LinksPerPage %>">
<INPUT TYPE="hidden" NAME="pagenumber_" value="<% = PageNumber+1 %>">
<INPUT TYPE="submit" VALUE="Next Page...">
</FORM>
....
MainRS.Close
Set MainRS = Nothing
...
OBJdbConnection.Close
Set OBJdbConnection = Nothing
**********
Ecco. La cosa ASSURDA e' che con IE 5 tutto funziona alla PERFEZIONE..
riesco a navigare avanti ed indietro su tutte le pagine dei risultati...
Invece con NS 4.7 ottengo la prima pagina dei risultati SENZA ALCUN ERRORE !
ma quando clikko su "Next Page..." per vedere la seconda pagina, questa NON
COMPARE e ottengo:
**********
Microsoft OLE DB Provider for ODBC Drivers errore "80040e21"
Il driver ODBC in uso non è in grado di supportare le proprietà richieste.
/home/file.asp, riga 48
**********
Come ho gia' detto cmq con IE5 tutto e' OK !!! e non capisco il perche',
considerando anche il fatto che il browser non "interagisce" con l'ASP.. lui
dovrebbe ricevere sempre la stessa pagina HTML indipendentemente dal
browser...
Inoltre se tolgo quel ", 1" suggerito dal libro MS (ma senza alcuna
spiegazione a riguardo) il motore di ricerca mi si inchioda subito in
ENTRAMBI i browser sulla proprieta' .AbsolutePage
Ho anche pensato che ci potrebbe essere qualche problema nella fase di
posting sul "Next Page", ma su entrambi i browser, il codice generato (alla
fine della prima pagina dei risultati) e' sempre lo stesso cioe':
***********
<FORM METHOD="post" ACTION="file.asp">
<INPUT TYPE="hidden" NAME="linksperpage_" value="5">
<INPUT TYPE="hidden" NAME="pagenumber_" value="2">
<INPUT TYPE="submit" VALUE="Next Page...">
</FORM>
***********
[NOTA: ricordo la query SQL la passo in una variabile Session, e che cmq
come testimonia il funzionamento di tutto su IE5 non ci sono problemi sulla
query]
Ciao e grazie per l'attenzione.
Mi scuso moltissimo per l'eccessiva lunghezza del msg, ma penso che con un
messaggio breve non sarei riuscito a spiegare il problema.
Fabio.

MainRS.Open MainSQL, OBJdbConnection, 1 '<-- RIGA CHE MI DA ERRORE !!!
Ciao Fabio,
faccio una piccola osservazione:
perché apri 2 volte il database? Tu lo apri inizialmente con:
OBJdbConnection.Open "DatabaseRegistrato", "", ""
e 3 righe dopo con:
MainRS.Open MainSQL, OBJdbConnection, 1
Perché non usi la piů semplce forma di apertura del database in questo modo:
MainRS.Open MainSql,"DatabaseRegistrato",1
utilizzando solo l'oggetto recordset e lasciando stare il "Connection"?
A proposito, MainSQL contiene le istruzioni SeQueL corrette?
L'ASP, essendo gestite lato server, non hanno alcun problema di sapere se
chi le visualizza ha Explorer o Netscape... L'errore che tu dici di avere č
molto strano...
Ciao
Andrew

Risolto... in un post successivo con l'aiuto di Zed ;)
10x 2 all.
Fabio.