Asp y sql

Hola amigos
Tengo el siguiente problema: tengo el siguiente código en asp, y lo que pasa es que la condición del primer y segundo if no funciona(y los valores si son iguales cuando lo pruebo)... ¿qué tengo mal?, saludos!
<%
dim pass , matricula, conexionicg, sql, rs
set pass=Request.Form("pass")
set matricula=Request.Form("matricula")
Set conexionicg = Server.CreateObject("ADODB.Connection")
set rs=server.CreateObject("ADODB.Recordset")
conexionicg.Open("DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=" & Server.MapPath("icgbd.mdb"))
sql="SELECT * FROM Usuarios"
rs.Open sql,conexionicg
while rs.EOF=false
if rs.Fields("Clave")=matricula then
if rs.Fields("Pass")=pass then
Response.Write("Matricula: ")
Response.Write(rs.Fields("Clave")&"<br>")
Response.Write("Password: ")
Response.Write(rs.fields("Pass"))
else
Response.Write("Pass Incorrecto")
end if
end if
rs.MoveNext
wend
conexionicg.Close
%>
Respuesta
1
Seguramente no te entra en los IF por que ha quedado algún espacio en blanco en algún campo de texto. Te recomiendo que siempre que compares textos con textos de bases de datos uses trim() para quitar posibles espacios. Ejemplo:
if trim(rs.Fields("Clave")) = trim(matricula) then ...
De todas maneras, te recomiendo que para este tipo de consultas filtres directamente al hacer la consulta, si te retorna EOF (recordset vacío) es que el password es incorrecto. De esta manera te será mucho más fácil hacer comparaciones de texto y será más óptimo tu código. Ejemplo:
sql="SELECT * FROM Usuarios WHERE matricula like '" & trim(Request.Form("matricula")) & "' AND pass = '" & trim(Request.Form("password")) & "'"
rs.Open sql,conexionicg
if rs.eof then
'No se ha encontrado, password incorrecto
else
'Password correcto
end if
Espero te cing sido de ayuda. Chao !

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas