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

dato tomado de un formulario y comparado con registros de bd

Estas en el tema de dato tomado de un formulario y comparado con registros de bd en el foro de ASP Clásico en Foros del Web. Segundo Tema del dia :) bueno el problema que tengo ahora es el siguiente: tengo una pagina web con un drop box list que desplega ...
  #1 (permalink)  
Antiguo 10/07/2007, 13:42
 
Fecha de Ingreso: julio-2007
Mensajes: 8
Antigüedad: 16 años, 11 meses
Puntos: 0
dato tomado de un formulario y comparado con registros de bd

Segundo Tema del dia :)

bueno el problema que tengo ahora es el siguiente:

tengo una pagina web con un drop box list que desplega datos los q son enviados a una pagina asp.

la pagina asp toma el dato y lo compara con un registro de la base de datos

el problema es que quiero que este dato tambien haga un response.redirect a otra pagina en caso de que el dato traido del formulario y el dato traido de la base de datos sea distinto, en este caso que la base de datos no tenga registros como para comparar.


esta es la conexion que uso y ahi se ve que creo la variable "comi" dandole el valor de request.form("REG") y luego comparo en el select que la variable comi sea = al registro Region.


<%Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("Galeria.mdb")
Set RS = Server.CreateObject("ADODB.RecordSet")
comi= Request.form("REG")
sql = "Select * From Remates WHERE Region = '"&comi&"' "
RS.Open sql, oConn %>



como hago el if para que tambien si la variable comi es distinta que el registro que en este caso es vacio, mande a la persona automaticamente a otra pagina web que logicamente desplegara un mensaje q dira " NO SE ENCUENTRAN REGISTROS DE ESTA REGION EN NUESTRA BASE DE DATOS"

este problema surge ya que me muestra la pagina correctamente cuando la persona selecciona la region correcta de un registro existente en la base de datos, pero si el usuario elige una region y manda el dato a la pagina asp que procesa la peticion , esta muestra este mensaje.


Script error detected at line 121.
Source line: Rs.MoveFirst
Description: El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.



para evitar este error prefiero que si el usuario elige una region, manda la peticion y el procesa se da cuenta que en la base de datos no existe registro de esa region mande automaticamente a otra pagina web.


muchas gracias a los q tengan el tiempo de ayudarme, es de vida o muerte entregar este trabajo a tiempo asi q una ayudadita bienvenida sea..

y gracias a quien me ayudo anteriormente con el otro problema :)
  #2 (permalink)  
Antiguo 10/07/2007, 13:51
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: dato tomado de un formulario y comparado con registros de bd

Hola nuevamente. Creo que lo único que necesitás es averiguar el valor de RS.EOF:


Código:
<%
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=" & Server.MapPath("Galeria.mdb")
Set RS = Server.CreateObject("ADODB.RecordSet")
comi= Request.form("REG")
sql = "Select * From Remates WHERE Region = '"&comi&"' "
RS.Open sql, oConn

if Rs.EOF then
response.erdirect("pagina_que_informa_el_error.asp")
else
' hay registros, así que continuás con tu programa desde aquí
end if
%>
  #3 (permalink)  
Antiguo 10/07/2007, 14:20
 
Fecha de Ingreso: julio-2007
Mensajes: 8
Antigüedad: 16 años, 11 meses
Puntos: 0
Re: dato tomado de un formulario y comparado con registros de bd

Muchas Gracias bro, denuevo me as ayudado y lo e conseguido :)

gracias y espero q esta respuesta les ayude a muchos q tengan algun problema similar :)
  #4 (permalink)  
Antiguo 10/07/2007, 17:33
Avatar de CésarBalaguer  
Fecha de Ingreso: octubre-2006
Ubicación: en mi casa
Mensajes: 181
Antigüedad: 17 años, 8 meses
Puntos: 0
Re: dato tomado de un formulario y comparado con registros de bd


una vez más, recomendaciones para el caso.
los SELECT * FROM tabla no son prácticos, son lentos, hacen lento el sistema, consumen recursos, y demás, para que traer todas las columnas de una tabla que nunca se van a usar, se está saturando la memoria, por nada; incluso, si existiesen varias ocurrencias vas a recuperar todas las que puedan haber en la tabla; cuando si lo que deseas es saber si existe o no existe un registro lo que debes hacer es un SELECT COUNT(*), si el resultado es mayor a 0 entonces si existe el registro, en caso contrario no existe
Saludos.
---*
  #5 (permalink)  
Antiguo 10/07/2007, 17:56
Avatar de AlZuwaga
Colaborador
 
Fecha de Ingreso: febrero-2001
Ubicación: 34.517 S, 58.500 O
Mensajes: 14.550
Antigüedad: 23 años, 3 meses
Puntos: 535
Re: dato tomado de un formulario y comparado con registros de bd

Hola César, es cierto lo que decís. Pero puede ser, dependiendo del caso, que un select * from tabla where campo = 'condición' sea lo más correcto.

Hay casos (la mayoría) en donde no lo és, pero existen casos en los que si ;)
  #6 (permalink)  
Antiguo 10/07/2007, 19:18
Avatar de u_goldman
Moderador
 
Fecha de Ingreso: enero-2002
Mensajes: 8.031
Antigüedad: 22 años, 5 meses
Puntos: 98
Re: dato tomado de un formulario y comparado con registros de bd

Cita:
Iniciado por CésarBalaguer Ver Mensaje

una vez más, recomendaciones para el caso.
los SELECT * FROM tabla no son prácticos...lo que debes hacer es un SELECT COUNT(*), si el resultado es mayor a 0 entonces si existe el registro, en caso contrario no existe
Saludos.
---*
En qué quedamos: ¿Es práctico hacer un SELECT * o no lo es?
Si quieres hacer esto, siguiendo la primera recomendación hazte un SELECT COUNT(campo), tampoco tiene caso traer todos los campos de un registro para este propósito.

Saludos
__________________
"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 19:45.