4 messaggi dal 22 aprile 2009
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 -
52 messaggi dal 24 febbraio 2008
nn ho capito molto bene il problema....cmq prova in questo modo..

'se nn ci sono record ti spara il mess
if rs.EOF then %>
NOn ci sono dati!
<% else
'altrimeni nel caso contrario li spari a video
While NOT rs.EOF
'io utilizzo il while wend...per me migliore

response.write rs("user")
response.write "<br>"
response.write rs("password")

rs.MoveNext
Wend
rs.Close()
Set rs = Nothing
......
%>

fammi sapere se ci sono dubbi
Domenico

Non hai veramente capito qualcosa fino a quando non sei in grado di spiegarlo a tua nonna.
(Albert Einstein)

Torna al forum | Feed RSS

ASPItalia.com non è responsabile per il contenuto dei messaggi presenti su questo servizio, non avendo nessun controllo sui messaggi postati nei propri forum, che rappresentano l'espressione del pensiero degli autori.