Foros del Web » Programando para Internet » ASP Clásico »

Problema en una pagina de acceso

Estas en el tema de Problema en una pagina de acceso en el foro de ASP Clásico en Foros del Web. 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 ...
  #1 (permalink)  
Antiguo 02/01/2008, 10:17
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 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.
  #2 (permalink)  
Antiguo 02/01/2008, 14:04
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Problema en una pagina de acceso

Se me olvidaba una cosa, el mismo código en las dos páginas pero atacando a la misa BBDD pero en SQL Server, funciona perfectamente. Importé esa tabla de la SQL Server al Access y es cuando falla.

Gracias.
  #3 (permalink)  
Antiguo 02/01/2008, 14:12
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problema en una pagina de acceso

¿Cuál es la línea 147?
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #4 (permalink)  
Antiguo 02/01/2008, 14:51
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Problema en una pagina de acceso

Hola, es esta:

set rs=oConn.Execute(SQL)
  #5 (permalink)  
Antiguo 02/01/2008, 15:30
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problema en una pagina de acceso

En tu código tienes esa instrucción varias veces, te sugiero que utilices las etiquetas de CODE para que sea más legible, además de resaltar -en negritas por ejemplo- la(s) línea(s) que están causando el conflicto.

Bueno, ahora el problema:

Por el tipo de error se debe a dos cosas:

1. Tienes un tipo de dato numérico al cuál le estás pasando un string: '1'
2. Tienes un tipo de dato string al cuál le estás pasando un nmérico: 1

Verifica tus tipos de dato en la base de datos, e imprime tu consulta seguida de un response.end para verificar que los datos que lleva sean los correctos.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #6 (permalink)  
Antiguo 02/01/2008, 18:17
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Problema en una pagina de acceso

Cita:
Iniciado por u_goldman Ver Mensaje
En tu código tienes esa instrucción varias veces, te sugiero que utilices las etiquetas de CODE para que sea más legible, además de resaltar -en negritas por ejemplo- la(s) línea(s) que están causando el conflicto.

Bueno, ahora el problema:

Por el tipo de error se debe a dos cosas:

1. Tienes un tipo de dato numérico al cuál le estás pasando un string: '1'
2. Tienes un tipo de dato string al cuál le estás pasando un nmérico: 1

Verifica tus tipos de dato en la base de datos, e imprime tu consulta seguida de un response.end para verificar que los datos que lleva sean los correctos.

Saludos
Hola, el campo en la BBDD access es un numérico. Lo que no entiendo es porque este mismo código si ataca a la misma BBDD pero en formato SQL Server funciona y al atacar a la Access no lo hace. La tabla es la misma.

Esto que me has dicho, exactamente cómo lo hago, con un response.write ¿?

Gracias.
  #7 (permalink)  
Antiguo 02/01/2008, 18:38
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problema en una pagina de acceso

Ok, si es numerico el tipo de dato y la sentencia que te esta tirando error es esta:

Código:
SQL="SELECT id, Cliente, clien_id FROM " & _
"accesos WHERE clien_id='" & Session("clien_id") & "'"
Sacale las comillas simples e intenta de nuevo.

Saludos
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
  #8 (permalink)  
Antiguo 02/01/2008, 18:44
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Problema en una pagina de acceso

Cita:
Iniciado por u_goldman Ver Mensaje
Ok, si es numerico el tipo de dato y la sentencia que te esta tirando error es esta:

Código:
SQL="SELECT id, Cliente, clien_id FROM " & _
"accesos WHERE clien_id='" & Session("clien_id") & "'"
Sacale las comillas simples e intenta de nuevo.

Saludos
Vale es decir así:


Código:
SQL="SELECT id, Cliente, clien_id FROM " & _
"accesos WHERE clien_id=" & Session("clien_id") & ""
Ahora mismo lo pruebo.

Gracias.
  #9 (permalink)  
Antiguo 02/01/2008, 18:53
 
Fecha de Ingreso: julio-2005
Mensajes: 70
Antigüedad: 18 años, 11 meses
Puntos: 0
Re: Problema en una pagina de acceso

Ya está, funciona.
Muchas Gracias u_goldman

Saludos.
  #10 (permalink)  
Antiguo 02/01/2008, 19:01
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: Problema en una pagina de acceso

Por nadas
__________________
"El hombre que ha empezado a vivir seriamente por dentro, empieza a vivir más sencillamente por fuera."
-- Ernest Hemingway
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 00:31.