
02/01/2008, 10:17
|
| | Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 19 años, 9 meses Puntos: 0 | |
Problema en una pagina de acceso Hola a todos,
tengo una página ASP donde el usuario teclea su usuario y contraseña. La base de datos es Access. El código es el siguiente:
<!-- #INCLUDE FILE="conectar.asp" -->
<%
Response.Buffer=True
Dim oConn, rs, SQL, nombre, password
nombre=Trim( Request.Form("Nombre") )
password=Trim ( Request.Form("Password") )
if nombre="" then
MostrarFormulario
else
SQL="SELECT id, usuario, password, URL, clien_id FROM " & _
"accesos WHERE (usuario='"&nombre&"' AND password='"&password&"');"
set rs=oConn.Execute(SQL)
if rs.EOF then
Session("ID")=Cint(0)
Response.Redirect("error_validacion.asp?validacion =nook")
else
Session("ID")=CInt(rs.Fields("clien_id"))
Session("usuario")=rs("usuario")
Session("password")=rs("password")
Session("URL")=rs("URL")
Session("clien_id")=rs("clien_id")
'pagina = nombre
'Response.Redirect(nombre)&"?validacion=ok"
pagina = RS.fields("URL").value
pagina=replace(pagina," ","")
Response.Redirect(pagina)&"?validacion=ok"
end if
end if
Sub MostrarFormulario
aqui va el formulario.
End Sub 'MostrarFormulario
%>
El archivo conectar.asp tiene el acceso a la base de datos. El código es este:
<%
set oConn=Server.CreateObject("ADODB.Connection")
oConn.Open="Provider=MSDASQL.1;Persist Security Info=False;Data Source=online"
%>
Bien, si el usuario teclea su código correcto, se va a una ruta que hay en el campo URL. Esto lo hace bien, ya que sale la página que le corresponde. Y es aquí donde viene el error.
Si yo tecleo user y user1, se me va a la página que hay en clien/user1/inicio.asp
Y es en este inicio.asp donde sale el siguiente error:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][Controlador ODBC Microsoft Access] No coinciden los tipos de datos en la expresión de criterios.
/clien/user1/inicio.asp, línea 147
El código es este:
<%
Response.Buffer=True
if Session("ID")=0 then
Response.Redirect("http://prueba/error_validacion.asp?validacion=timeout")
end if
%>
<%
'Para los redireccionamientos
Response.Buffer=True
Dim oConn, rs, SQL
SQL="SELECT id, Cliente, clien_id FROM " & _
"accesos WHERE clien_id='" & Session("clien_id") & "'"
'Ejecutamos consulta
set rs=oConn.Execute(SQL)
Session("clien_id")=CInt(rs.Fields("clien_id"))
Session("id")=rs("id")
Session("Cliente")=rs("Cliente")
Session("clien_id")=rs("clien_id")
%>
Si os fijais, pongo que si ID=0 entonces que se redireccione a otra página informándole que tiene que hacer login. Pues bien, si pongo en vez de 0, el número de clien_id que le corresponde, al hacer login, automaticamente me vuelve a ir a la página de login. Esto es señal, que el número que le envia es el correcto. Por eso, no entiendo, porque dice este error de que no coinciden los tipos de datos.
El campo clien_id es un numérico, y además la tabla a la que accede ambas páginas es la misma.
Gracias. |