21 messaggi dal 18 marzo 2002
Problema: ho creato un area riservata all'interno di un sito. Quando un utente vi accede, vi trova la possibilità di consultare una scheda personale che ho inserito in un database. Non mi interessa creare moduli per aggiungere o modificare record, mi interessa SOLO che l'utente finale visualizzi la sua scheda.

Per personalizzare la visualizzazione dei record in base all'utente ho utilizzato questo filtro::

rs.filter=" utente = 'pippo' "

laddove utente è il campo della mia tabella, mentre "pippo" è uno degli utenti inseriti. In questo modo, visualizzo non più tutti i record, bensì solo i record relativi all'utente denominato appunto "pippo".

A questo punto la mia esigenza è molto semplice: anzichè indicare in maniera fissa il nome utente che deve fare da filtro, vorrei che tale nome veisse recuperato in automatico da un form.
Mi spiego: per entrare nell'area riservata, ovviamente, gli utenti inserisono username e password in un form e, dopo un'autenticazione basata anch'essa su di un database, accedono o meno all'area riservata. che comando devo utilizzare, insomma, per fare in modo che al posto di "pippo" il filtro del recordset venga letto direttamente dal campo username del form di autenticazione?

Aspetto con ansia aiuti e suggerimenti....



Into the void we have to travel...Space is the place.
21 messaggi dal 18 marzo 2002
Ciao Luana!

Allora, ho provato a fare come dici te, ma mi da il seguente errore:

ADODB.Recordset error '800a0bcd'

Either BOF or EOF is True, or the current record has been deleted; the operation requested by the application requires a current record.

/password/welcome.asp, line 41


Ti includo il codice con cui visualizzo i record, così forse capisci meglio....

<%
Set conn = Server.CreateObject("ADODB.Connection")
conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & server.MapPath("/mdb-database/schede.mdb")

sql = "SELECT * FROM schede"
Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open sql, conn, 3, 3

if Request.Form("Nome" ) <> "" then

rs.AddNew
rs.Fields("Nome") = Request.Form("Nome")
rs.Fields("Colore") = Request.Form("Colore")

rs.update

end if

nomeutente=request.QueryString("username")

' Filtraggio del database in base al nome utente
rs.filter=" utente = 'nomeutente' "

rs.MoveFirst
do until rs.EOF
Response.write( "<strong>Nome utente:</strong>" & "<BR>")
Response.write(rs.Fields("utente") & "<BR>")
Response.write( "<p>___________________</p>")
Response.write( "<strong>Data dell'ultima visita al sito:</strong>" & "<BR>")
Response.write(rs.Fields("ultvisita") & "<BR>")
Response.write( "<p>___________________</p>")
Response.write( "<strong>pagine inviate:</strong>" & "<BR>")
Response.write(rs.Fields("pagine") & "<BR>")
Response.write( "<p>___________________</p>")
Response.write( "<strong>Riepilogo situazione attuale:</strong>" & "<BR>")
Response.write(rs.Fields("situazione") & "<BR>")
Response.write( "<p>___________________</p>")
Response.write( "<p>___________________</p>")
Response.write( "<p>___________________</p>")

rs.MoveNext
loop
rs.Close
set rs = Nothing
conn.Close
set conn = Nothing

%>


Come e dove inserisco i comandi che mi hai dato tu?


Into the void we have to travel...Space is the place.
21 messaggi dal 18 marzo 2002
Uff....è da 3 giorni che divento matto su 'sta cosa e mi scoppia la testa...

Into the void we have to travel...Space is the place.

Into the void we have to travel...Space is the place.
21 messaggi dal 18 marzo 2002
Ehm....come faccio? Scusa l'ignoranza, ma sono decisamente un neofita...

Into the void we have to travel...Space is the place.

Into the void we have to travel...Space is the place.
11.886 messaggi dal 09 febbraio 2002
Contributi
ma scusa che motivo hai di usare un filtro quando con la stringa sql puoi selezionare tranquillamente tutto quello che vuoi?

tu hai nel database un campo chiamato utente? allora fai:

rs.Open "SELECT * FROM schede WHERE utente ='pippo'"

e ottieni come risultato un recordset composto da un solo record: quello dell'utente pippo.
Se vuoi passare il nome da form, lo puoi fare. Modifica la stringa qui sopra in questo modo:

rs.Open "SELECT * FROM schede WHERE utente = '"&Request.form("utente")&"'"

Quando ricevi l'errore "Either BOF or EOF is True" è perchè tenti di eseguire operazioni su un recordset vuoto (composto da 0 record).
Questo si verifica quando non è stato trovato nessun record che corrisponde ai criteri specificati nella select.
Se ad esempio fai:
rs.Open "SELECT * FROM schede WHERE utente ='carlo'"

e se non esiste l'utente "carlo" il recordset sarà vuoto ed ecco che se invochi un qualsiasi metodo di rs, ricevi l'errore.

-----------------------
Da una perla dal saggio:
Quando non hai capito, devi dire "non ho capito", no che dici che hai capito e invece non hai capito un cavolo. Hai capito?
-----------------------

Enjoy learning and just keep making

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.