problemas sql
Estoy realizando una aplicacion para consulta de notas via web. El problema es el siguiente:dentro de la base de datos tengo una tabla(asignatura)en la cual tengo el campo id_asignatura(autonumerico). Lo que quiero es que vaya recorriendo las distintas asignaturas, es decir, que coja la primera id_asignatura y vaya a su correspondiente tabla y haga la sentencia sql, y asi sucesivamente. Lo he conseguido cuando defino a id_asignatura como texto y yo coloco el numero, pero no me vale. Si hay un alma caritativa por ahi. Acontinuacion pongo el codigo:
<%
Dim oConn, rs, SQL, DNI, PASSWD, Ob_RS, ID_Asignatura
Response.buffer=true
DNI=Trim( Request.Form("DNI") )
PASSWD=Trim ( Request.Form("PASSWD") )
Session("UsuarioDNI")= DNI
Session("UsuarioPASSWD")= PASSWD
if DNI="" then
Session("aut")=false
Response.Redirect("/euiti0/html/paginaerror2.html")
else
set oConn=Server.CreateObject("ADODB.Connection")
SET Ob_RS = Server.CreateObject ("ADODB.RecordSet")
oConn.Open "ASIGNATURAS"
Ob_RS.Open "Asignaturas", OConn, adOpenStatic, adLockOptimistic, adCmdTable
DO WHILE NOT Ob_RS.Eof
ID_ASIGNATURA = Ob_RS ("ID_ASIGNATURA")
SQL="SELECT * FROM " & _
"[" & ID_Asignatura & "] WHERE (DNI="&DNI&" AND PASSWORD="&PASSWD&");"
set rs=oConn.Execute(SQL)
Ob_RS.MoveNext
LOOP
if rs.EOF then
Session("aut")=false
Response.Write("Lo siento, no existe ese usuario/contraseña.")
else
Session("aut")=true
Response.Redirect("INICIO.asp")
end if
end if
RS.close
Ob_RS.Close
OConn.Close
set rs=nothing
set Ob_rs=nothing
set oConn=nothing
%>
<%
Dim oConn, rs, SQL, DNI, PASSWD, Ob_RS, ID_Asignatura
Response.buffer=true
DNI=Trim( Request.Form("DNI") )
PASSWD=Trim ( Request.Form("PASSWD") )
Session("UsuarioDNI")= DNI
Session("UsuarioPASSWD")= PASSWD
if DNI="" then
Session("aut")=false
Response.Redirect("/euiti0/html/paginaerror2.html")
else
set oConn=Server.CreateObject("ADODB.Connection")
SET Ob_RS = Server.CreateObject ("ADODB.RecordSet")
oConn.Open "ASIGNATURAS"
Ob_RS.Open "Asignaturas", OConn, adOpenStatic, adLockOptimistic, adCmdTable
DO WHILE NOT Ob_RS.Eof
ID_ASIGNATURA = Ob_RS ("ID_ASIGNATURA")
SQL="SELECT * FROM " & _
"[" & ID_Asignatura & "] WHERE (DNI="&DNI&" AND PASSWORD="&PASSWD&");"
set rs=oConn.Execute(SQL)
Ob_RS.MoveNext
LOOP
if rs.EOF then
Session("aut")=false
Response.Write("Lo siento, no existe ese usuario/contraseña.")
else
Session("aut")=true
Response.Redirect("INICIO.asp")
end if
end if
RS.close
Ob_RS.Close
OConn.Close
set rs=nothing
set Ob_rs=nothing
set oConn=nothing
%>
No lo he entendido muy bien, pero es posible que sea por el tema de los tipos:
Deberías hacer una conversión de tipos, es decir, si tu lees de la BD el campo Id_Asignatura, luego lo fuerzas a entero cuando hagas la búsqueda:
id = rs("ID_Asignatura")
"SELECT * FROM ASIGNATURAS WHERE Id_Asignatura=" & CInt(id)
Con CInt fuerzas la conversión a tipo entero
Deberías hacer una conversión de tipos, es decir, si tu lees de la BD el campo Id_Asignatura, luego lo fuerzas a entero cuando hagas la búsqueda:
id = rs("ID_Asignatura")
"SELECT * FROM ASIGNATURAS WHERE Id_Asignatura=" & CInt(id)
Con CInt fuerzas la conversión a tipo entero
