Ciao a tutti, da un po di tempo mi sono imbattuto in un problema che non riesco a risolvere. Ho postato la stessa domanda in altri forum ma fino ad ora non ne sono venuto a capo.
Sto realizzando un esercizio di inserimento, modifica, cancellazione di records in un db Access tramite ASP.
L'INSERT sembra funzionare bene, cioè i records vengono memorizzati nel DB, ma se provo a gestirli in un secondo momento sorgono i problemi.
Il problema sembra stare nella fase del CICLO DO/UNTIL/WHILE, cioè quando, dopo aver aperto il recordset, tento di ciclare i records.
In questa fase appare l'errore:
Tipo di errore:
ADODB.Field (0x80020009)
Il record corrente corrisponde all'inizio o alla fine del file oppure è stato eliminato. Per eseguire l'operazione richiesta è necessario disporre di un record corrente.
/esercizio prodotti/modifica.asp
La pagina che elabora i dati è questa:
<%@language="vbscript" codepage="1252"%>
<%option explicit%>
<!--#include file="adovbs.inc"-->
<html>
<title>Aggiorna Dati</title>
<body>
<center>
<%
'creo le variabili che ci serviranno per la pagina
Dim usr, psw, con, rs, sql_sel
'recupero i dati dal form
usr=trim(lcase(request("user")))
psw=trim(lcase(request("password")))
'istanzio l'oggetto connection e recordset
set con=server.createobject("adodb.connection")
set rs=server.createobject("adodb.recordset")
'apro la connessione usando il dsn di sistema
'con.connectionstring="dsn=prodotti1"
'con.open
'Apro la connessione su localhost
con.open = "DRIVER=Microsoft Access Driver (*.mdb); DBQ=c:\inetpub\wwwroot\esercizio prodotti\mdb-database\prodotti2.mdb;"
'creo la stringa SQL per recuperare i dati dal DB
sql_sel="select * from tab_utenti order by user asc" 'where user='"&usr&"' and password='"&psw&"'"
'Apro e riempio l'oggetto recordset tramite la stringa SQL
rs.open sql_sel,con,3,3
'IL RECORDCOUNT MI RESTITUISCE IL NUMERO CORRETTO DI RECORDS NEL RS
response.write "Quanti records nel rs: " & rs.recordcount
response.write "<br>"
'STAMPO "manualmente" A VIDEO I PRIMI 5 RECORDS del RS e tutto è OK!! FUNZIONA ANCHE SE CAMBIO L'ORDINAMENTO ASC O DESC DELLA QUERY SQL (SQL_SEL)
response.write "Benvenuto/a " & rs.fields("user") & " " & rs.fields("password")
rs.movenext
response.write "<br>"
response.write "Benvenuto/a " & rs.fields("user") & " " & rs.fields("password")
rs.movenext
response.write "<br>"
response.write "Benvenuto/a " & rs.fields("user") & " " & rs.fields("password")
rs.movenext
response.write "<br>"
response.write "Benvenuto/a " & rs.fields("user") & " " & rs.fields("password")
rs.movenext
response.write "<br>"
response.write "Benvenuto/a " & rs.fields("user") & " " & rs.fields("password")
'MI RIPOSIZIONO SUL PRIMO RECORD del RS E FUNZIONA PERCHE' HO PROVATO A STAMPARE DOPO QUESTA ISTRUZIONE E RITORNA CORRETTAMENTE ALL'INIZIO
response.write "<br>"
rs.movefirst
'COME PER LA PRECEDENTE SITUAZIONE QUESTE ISTRUZIONI PROVOCANO L'ERRORE SEGNALATO
If rs.EOF Then
response.write "Nessun dato disponibile"
else
While rs.EOF = False
response.write rs("user")
response.write "<br>"
response.write rs("password")
'SE CAMBIO QUESTA ISTRUZIONE IN RS.MOVEFIRST MI TORNA AL PRIMO RECORD E ME LO VISUALIZZA, SE CI RIMETTO RS.MOVENEXT MI GENERA L'ERRORE SOTTO INDICATO
rs.MoveNext
Loop
end if
'CODICE AGGIUNTIVO CHE NON RIGUARDA IL PROBLEMA SU INDICATO, CE LO METTO PER COMPLETEZZA
%>
<p><hr></p>
<%
response.write"<a href=index.html>Torna alla Home Page</a>"
'CHIUDO E RESETTO GLI OGGETTI CON E RS
rs.close
set rs=nothing
con.close
set con=nothing
%>
</center>
</body>
</html>
Verifiche e test vari:
1)Ho controllato la versione di MDAC ed è la 2.8 sp1
2)Ho disinstallato SP3 di XP ma non ha sortito cambiamenti.
3)Vers. del DB Access è la 2003, ma ho provato anche con DB Access 97, non cambia
4)Ho provato ad eseguire anche lo stesso codice su Visual basic 6.0 e visualizza i records dello stesso DB correttamente...quindi il problema sembra essere proprio in ASP.
5)Aggiungo solo una nota, le stesse operazioni eseguite all'interno di un altro file generato da un altro PC funzionano perfettamente.
Attendo notizie
Grazie in anticipo
Modificato da liloeconnie il 01 settembre 2009 19.05 -