Newsgroup: it.comp.www.asp
Titolo: stringhe uguali non riconosciute

Ciao a tutti,
ho un problema che ha dell'assurdo!
Ho scritto il seguente codice ma sembra che ASP non riconosca due stringhe 
identiche ricavate da un database SQL (ho controllato spazi, caratteri 
maiuscoli, minuscoli, ecc.).
<%
 NomeUtente= "Prova3"
 Password= "Pass3"
    if NomeUtente = "" or Password = "" then
  response.write "<p align='center'>Nome Utente e/o Password errati, 
impossibile continuare.</p>"
 Else
  set res = conn.execute ("select * from CLIENTI")
  do while not res.eof
   if res.fields("NomeUtente") = NomeUtente AND res.fields("Password") = 
Password Then
    response.write "<div align='center'>TR0VATO!!</div>"
   End if
   res.movenext
  loop
 End if
%>
I valori di NomeUtente e Password non vengono mai trovati dentro il database 
e vi assicuro che esistono.
Se poi modifico
   if res.fields("NomeUtente") = NomeUtente AND res.fields("Password") = 
Password Then
    response.write "<div align='center'>TR0VATO!!</div>"
   End if
con
   if res.fields("NomeUtente") = NomeUtente AND res.fields("Password") = 
Password Then
    response.write "<div align='center'>TR0VATO!!</div>"
   else
    response.write "<div align='center'>" & NomeUtente & "=" & 
res.fields("NomeUtente").value & " - " & Password & "=" & 
res.fields("Password").value & "</div>"
   End if
mi scrive Prova3=Prova3 - Pass3=Pass3 (conferma in più che sono realmente 
uguali!!)
Dove sbaglio??
Vi ringrazio

 Vi ringrazio
Prego.
Ciao!
-- 
Lorenzo Benaglia
Microsoft MVP - SQL Server
http://blogs.dotnethell.it/lorenzo
http://italy.mvps.org
 

 (Server, giusto? :-) )
SQL Server - giusto!
ho provato con "char" "nchar" e "text" ma non funziona con nessuna!
Qual è la proprietà  più corretta per una stringa di testo?
Ciao 

 Qual è la proprietà  più corretta per una stringa di testo?
Nel tuo caso varchar, l'unica che non hai provato :-D
Il data type char permette di definire stringhe a lunghezza fissa. Se 
supponiamo di definire la colonna Nome come char(10), se la popolo con 'a' 
oppure 'Lorenzo' verranno allocati sempre 10 byte ed i restanti caratteri 
saranno "fillati" con spazi:
'a         '
'Lorenzo   '
di conseguenza il tuo confronto fallirà (a meno di trimmare il contenuto dei 
campi lato VBScript).
Diversamente varchar permette di definire colonne a lunghezza variabile, 
occupando solo i bytes strettamente necessari.
Il prefisso n è utilizzato per dichiarare variabili/colonne/parametri 
UNICODE, ovvero che utilizzano 2 bytes per singolo carattere.
Infine text permette di definire stringhe a lunghezza variabile fino a 
2^31-1 (2.147.483.647) caratteri, ma la sua gestione è un pochino differente 
(richiede apposite funzioni). In SQL Server 2005 questo data type è stato 
deprecato, a favore di varchar(max).
Sui Books Online potrai approfondire tutti questi argomenti :-)


 Vi ringrazio
Scusa ma non fai prima a verificare direttamente in SQL la presenza o meno
dell'accoppiata dei valori?
Es.
'---
...
set res = conn.execute ("select * from CLIENTI Where NomeUtente='" &
NomeUtente & "' And Password = '" & Password & "'")
'--> se il recorset è vuoto vuol dire che non ha trovato nulla
if res.eof then
    response.write "--> non trovato <--"
else
    response.write "--> trovato <--"
end if
set res = nothing
'---
Ciao.
-- 
Sergio MAZZA 

 Nel tuo caso varchar, l'unica che non hai provato :-D
Ciao Lorenzo,
ti ringrazio per la tua esauriente risposta, l'ho letta con attenzione e 
penso di aver capito quello che hai voluto spiegare ma purtroppo con 
"varchar" e con "nvarchar" non funziona... il problema è sempre lo stesso.
Mentre funziona con la soluzione di Sergio che però avevo escluso per altri 
motivi ed in quanto spesso dovrò fare confronti tra stringhe.
Purtroppo ho sempre lavorato con database MDB ed adesso con SQL Server 2003 
ho seri problemi...
Cos'altro potrebbe essere? sto impazzendo...
Ti riporto l'ultimo listato che ho provato
La stringa di connessione è:
<%
set conn = server.createobject ("ADODB.connection")
strDBType = "sqlserver"
conn.open = "driver={SQL 
Server};server=11.11.111.11;uid=NomeUtente;pwd=Password;database=NomeDatabase"
%>
Il codice è:
<%
 NomeUtenteM= "Prova3"
 PasswordM= "Pass3"
 if NomeUtenteM = "" or PasswordM = "" then
  response.write "<p align='center'>Nome Utente e/o Password errati, 
impossibile continuare.</p>"
 Else
  set res = conn.execute ("select * from CLIENTI")
  do while not res.eof
   if res.fields("NomeUtente")=NomeUtenteM AND 
res.fields("Password")=PasswordM Then
    response.write "<div align='center'>TR0VATO!!</div>"
   else
       response.write "<div align='center'>" & NomeUtenteM & "=" & 
res.fields("NomeUtente") & " - " & PasswordM & "=" & res.fields("Password") 
& "</div>"


 è sempre lo stesso.
:-)
Se esegui questo codice cosa ti viene visualizzato?
...
Response.Write "<" & res.Fields("NomeUtente").Value & ">"
Response.Write "<" & res.Fields("Password").Value & ">"
...


> Se esegui questo codice cosa ti viene visualizzato?
non scrive niente ma se lo modifico nel seguente modo
    Response.Write "<div align='center'>" & res.Fields("NomeUtente") & 
"</div>"
    Response.Write "<div align='center'>" & res.Fields("Password") & 
"</div>"
oppure
    Response.Write "<div align='center'>" & res.Fields("NomeUtente").value & 
"</div>"
    Response.Write "<div align='center'>" & res.Fields("Password").value & 
"</div>"
se eseguito nell'if di confronto non passa mai per TROVATO e scrive sempre:
Prova1
Pass1
Prova2
Pass2
Prova3
Pass3
in sostanza reitera tutti i record, l'ultimo corrisponde con il record 
corretto che però mi dice essere diverso!
Spero di riuscire a risolvere questo problema! ormai sono giorni che giro 
attorno...
P.S. Come si fa in SQL Server 2003 ad un inserire un campo contatore 
(obbligatorio, crescente e che si autocompili ad ogni aggiunta di record? lo 
devo riempire sempre da codice o si arrangia da solo come MSB? ho provato a 
inserire come tipo dati "INT" e quindi a mettere la spunta su "Id" ed 
inserire i valori ID start ed ID incremento rispettivamente 1 e 1 ma non 
funziona in quanto chiuso salvando la tabella ma appena riapro la sua 
struttura la spunta su "Id" e l'incremento non c'è più...
Grazie ancora per l'interessamento!!!

 Grazie ancora per l'interessamento!!!
Prego.
Ciao!


 Mah... si vede che non salvi le modifiche :-)
Bha! più di premere "Applica" non so che fare... comunque riproverò...
Rimane il problema delle stringhe uguali ma considerate diverse non so più 
che fare!
Grazie

 Grazie


 ...

 
...