Problema en select ayuda porfa

16/01/2006 - 21:15 por transvega | Informe spam
Saludos a todos, necesito de su valiosa ayuda ya que esto me urge un poco,
resulta que tengo en una BD SQL 2 tablas, una de usuarios y otra para
resultados.

La primera ASP que tengo me captura el ID del usuario y lo paso a una
segunda ASP la cuál debe verificar primero si se encuentra el ID en la
tabla Usuarios, y luego verificar si ha grabado algun resultado en la otra
tabla, si es así enviar un mensaje que ya ingresó anteriormente. Si no
existe en Resultados enviarlo a la ASP del cuestionario y si no existe en
ninguna enviar mensaje diciendo que no existe el ID.

Estoy utilizando un ODBC para conectar a la BD pero cuando intento validar
el ID me sale el mensaje de que no existe el ID en la BD y es porque está
validando las dos.

Les adjunto el código para que me den una ayuda a ver cuál es el problema,
lo cual les agradecería mucho.


El código es el siguiente:

<html>
<td width="30%"><img src="img/Logo_MH.jpg" width="136" height="122"> </td>
<br>
<br>
<br>
</html>

<%
Dim cedula, oConn, RS, Id

'Primero nos fijamos si ambos campos fueron completados.
'Si no se cumple, redireccionamos a validar.asp
If Request.Form("cedula") = "" then
Response.Redirect "validar.asp"
Else
'Guardamos los datos del Form en variables y evitamos la comilla simple
cedula = Trim(Request.Form("cedula"))
cedula = Replace(cedula,"'","''")
Id=cedula

'Conexion por ODBC
oConn.Open "DSN=control;UID=XXXX;PWD=XXXX"

'Seleccionamos de la tabla solo los registros que concuerden con el
usuario del Form.
sql = "SELECT * FROM TUsuarios U, Tresultadosweb W WHERE U.cedula = "&
cedula &" or W.cedula= "& cedula &""

Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, oConn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el
usuario.
If (RS.EOF = true) then

Response.Write "Esta ID no existe en nuestra base de datos, favor
contactar al personal técnico de la comisión"
ElseIf RS.Fields("cedula") = cedula then 'Si el campo de la tabla es igual
a nuestra variable, estas logueado.


'Para redireccionar a la pagina del demo
response.Write "La cédula número: " & Cedula & "<br>"
response.Write "Ya proporcionó las respuestas anteriormente"

Else 'Otra cosa, seria cuando el password no es la que seleccionamos.
'Response.Write "Esta cédula no se encuentra registrada"
'Para redireccionar a la pagina del demo
Response.Redirect("cuestionario.asp?Id="&Server.URLEncode(cedula)&"")


End If
'Limpiamos y cerramos.
RS.Close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
End If
%>
 

Leer las respuestas

#1 Carlos Sacristán
17/01/2006 - 16:08 | Informe spam
Suponiendo que primeramente se graba en la tabla de usuarios, yo
probaría con la siguiente consulta:

SELECT u.cedula as usuario, w.cedula as resultado FROM TUsuarios u LEFT
JOIN TresultadosWeb w ON u.cedula=w.cedula WHERE u.cedula= #valor del
parámetro#

Se pueden dar entonces tres casos:

- Que u.cedula sea NULL -> el usuario no existe
- Que w.cedula sea NULL -> el usuario existe pero no ingresó resultados
en esa tabla
- Que los dos campos sean diferentes de NULL -> el usuario existe e
ingresó resultados en la tabla



Un saludo

-
"Sólo sé que no sé nada. " (Sócrates)

"Jorge" escribió en el mensaje
news:#
Saludos a todos, necesito de su valiosa ayuda ya que esto me urge un poco,
resulta que tengo en una BD SQL 2 tablas, una de usuarios y otra para
resultados.

La primera ASP que tengo me captura el ID del usuario y lo paso a una
segunda ASP la cuál debe verificar primero si se encuentra el ID en la
tabla Usuarios, y luego verificar si ha grabado algun resultado en la otra
tabla, si es así enviar un mensaje que ya ingresó anteriormente. Si no
existe en Resultados enviarlo a la ASP del cuestionario y si no existe en
ninguna enviar mensaje diciendo que no existe el ID.

Estoy utilizando un ODBC para conectar a la BD pero cuando intento validar
el ID me sale el mensaje de que no existe el ID en la BD y es porque está
validando las dos.

Les adjunto el código para que me den una ayuda a ver cuál es el problema,
lo cual les agradecería mucho.


El código es el siguiente:

<html>
<td width="30%"><img src="img/Logo_MH.jpg" width="136" height="122"> </td>
<br>
<br>
<br>
</html>

<%
Dim cedula, oConn, RS, Id

'Primero nos fijamos si ambos campos fueron completados.
'Si no se cumple, redireccionamos a validar.asp
If Request.Form("cedula") = "" then
Response.Redirect "validar.asp"
Else
'Guardamos los datos del Form en variables y evitamos la comilla simple
cedula = Trim(Request.Form("cedula"))
cedula = Replace(cedula,"'","''")
Id=cedula

'Conexion por ODBC
oConn.Open "DSN=control;UID=XXXX;PWD=XXXX"

'Seleccionamos de la tabla solo los registros que concuerden con el
usuario del Form.
sql = "SELECT * FROM TUsuarios U, Tresultadosweb W WHERE U.cedula = "&
cedula &" or W.cedula= "& cedula &""

Set RS = Server.CreateObject ("ADODB.RecordSet")
RS.Open sql, oConn
'Si el valor EOF (fin de la tabla elegida) es verdadero, no existe el
usuario.
If (RS.EOF = true) then

Response.Write "Esta ID no existe en nuestra base de datos, favor
contactar al personal técnico de la comisión"
ElseIf RS.Fields("cedula") = cedula then 'Si el campo de la tabla es igual
a nuestra variable, estas logueado.


'Para redireccionar a la pagina del demo
response.Write "La cédula número: " & Cedula & "<br>"
response.Write "Ya proporcionó las respuestas anteriormente"

Else 'Otra cosa, seria cuando el password no es la que seleccionamos.
'Response.Write "Esta cédula no se encuentra registrada"
'Para redireccionar a la pagina del demo
Response.Redirect("cuestionario.asp?Id="&Server.URLEncode(cedula)&"")


End If
'Limpiamos y cerramos.
RS.Close
oConn.Close
Set RS = Nothing
Set oConn = Nothing
End If
%>

Preguntas similares