Newsgroup: it.comp.www.asp
Titolo: Problemino ADO...o problemone?

Ciao a tutti. Sto cercando qualcuno che mi aiuti ad uscire dal pantano
di istruzioni in cui mi cacciato... :-)
Si tratta di tre file asp per fare l'autenticazione o la registrazione per
accedere a pagine protette.
Il casino comincia quando avviene la chiamata della funzione ValidateLogin
in fondo alla pagina :-)
Quando chiamo la pagina protetta, interviene questo file che è incluso
ma....AIUTO....
Questo l'errore restituito:
False
Microsoft OLE DB Provider for ODBC Drivers error '80040e10'
[Microsoft][ODBC Microsoft Access Driver] Too few parameters. Expected 1.
/RiparatoreC/Registrazione/checkpassword.asp, line 84
<body>
<%
username = Trim(Request("username"))
password = Trim(Request("password"))
newUser = Trim(Request("newUser"))
newUsername = Trim(Request("newUsername"))
newPassword = Trim(Request("newPassword"))
addCookie = Trim(Request("addCookie"))
'Richiama la pagina corrente
nextPage = Request.ServerVariables("SCRIPT_NAME")
Set Con = Server.CreateObject("ADODB.Connection")
Con.Open "userDB"
'script per aggiungere nuovo utente
If newUser<> "" THEN
    If newUsername = "" THEN
     errore = "Devi inserire lo username"
 End If
 If newPassword = "" THEN
     errore = "Devi inserire la password"
 End If
 If usernameTaken(newusername)  THEN
     errore = "Username già in uso.Scegline un'altra"
 End If
 SQLString = "INSERT INTO userlist(user_name, user_password) "&" VALUES ('"&
newusername & "','"& newPassword & "')"
 Con.Execute SQLString
 username = newUsername
 password = newPassword
 If useSession THEN Session("loggedIn") = "Yes"
End If
'autentica l'utente
IF Session("loggedIn") = "" THEN
    If username = "" OR password = "" THEN
     response.write LoginMessage = "Devi registrarti prima di accedere a
questa pagina"
  'showLogin
 End If
 Risultato = validateLogin(username,password)
 If risultato = 1 THEN
     LoginMessage = "username non valido"
  'ShowLogin
 END IF
 If risultato = 2 THEN
       LoginMessage = "password non valido"
  'ShowLogin
 END IF
 If useSession THEN Session("loggedIn") = "Yes"
End if
'Aggiunge i Cookie
IF addCookie<> "" THEN
   Response.write("username") = username
   Response.write("username").Expires = "10/10/2002"
   Response.write("password") = password
   Response.write("password").Expires = "10/10/2002"
END IF
'Crea la variabile di protezion Query String
sq = "username=" & Server.HTMLEncode(username) & "&"
sq = sq & "password=" & Server.HTMLEncode(password)
sf = "<input name=""username"" type=""hidden"" "
sf = sf & "value=""" & Server.HMLEncode(username) & """>"
sf = "<input name=""password"" type=""hidden"" "
sf = sf & "value=""" & Server.HMLEncode(password) & """>"
%>
<%
function validateLogin(theusername,thepassword)
   SQLString = "SELECT user_password FROM userlist WHERE user_username='" &
usename & "'"
 Questa la linea 84 ------>  Set Rs = Con.Execute(SQLString)
 IF Rs.EOF THEN
     validateLogin = 1
 ELSE
    If Rs("user_password")<>thePassword THEN
     validateLogin = 2
  ELSE
  validateLogin = 0
 END IF
END IF
End Function
%>
GRAZIE sinceramente a chiunque mi fornisce uno spunto, una riflessione
per risolvere il problema.
Danilo

Stai facendo richiesta di apertura di una tabella con un oggetto di
tipo command.
Con gli oggetti di questo tipo puoi eseguire delle query che non
ritornano records.
Tu hai usato una query come "SELECT * FROM" quindi che ritorna tutti o
alcuni records usando il comando Execute() di un oggetto command.
Devi usare un oggetto RECORDSET, ed il suo comando .OPEN (query).
Ciao


il messaggio di access č chiaro: non gli hai fornito i parametri che si
aspetta
nella select che va in errore
questo perche la variabile "usename" che hai passato alla query
non esiste (in realta non č mai stata valorizzta  ne' dimensionata)!!
In questo caso , Access ha considerato 'usename' come parametro da riempire
con un valore.
Correggendo il nome della variabile con "theusername" ossia il
valore che hai passato come utente alla funzione di validazione,  tutto
dovrebbe funzionare
nb.  un buon metodo per non cadere in questi errori
č farsi un response dell'istruzione sql generata dal proprio codice e
provarla direttamente in access, al fine di intercettare piů facilmente
l'errore
Inoltre l'utilizzo di Option Explicit in principio della tua pagina di
codice
ti aiuterebbe a non usare variabili non definite
bye  max