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

ADODB.Recordset (0x800A0BCD)

Estas en el tema de ADODB.Recordset (0x800A0BCD) en el foro de ASP Clásico en Foros del Web. Hola que tal! Quisiera saber si me pueden ayudar con este mensaje de error, ¿que puedo hacer? Tipo de error: ADODB.Recordset (0x800A0BCD) El valor de ...
  #1 (permalink)  
Antiguo 24/06/2005, 13:59
Avatar de vhpc  
Fecha de Ingreso: mayo-2005
Mensajes: 66
Antigüedad: 20 años
Puntos: 0
ADODB.Recordset (0x800A0BCD)

Hola que tal!
Quisiera saber si me pueden ayudar con este mensaje de error, ¿que puedo hacer?

Tipo de error:
ADODB.Recordset (0x800A0BCD)
El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.

gracias...
  #2 (permalink)  
Antiguo 24/06/2005, 15:06
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Eso te pasa cuando el puntero del RS todavía no ha comenzado o ya termino su recorrido. Una causa puede ser que no se encuentran registros de acuerdo a los parametros de tu consulta SQL. A mi también me sabía aparecer ese error cuando solamente seleccionaba un solo registro de la base de datos, y no le decía que se mueva a ese registro con RS.MoveFirst(), pero eso fue por un tiempo nomás, ya que después suprimí esa línea y me funcionaba correctamente.
Si tu consulta no encuentra algún registro, puedes utilizar un condicional para evitar que te muestre ese error, algo así:

If RS.EOF then
Response.Write("La consulta a la base de datos no arrojo ningún resultado.")
else

'entonces si arroja resultados se recorre con el bucle
end if

Y lo otro que podrías hacer para asegurarte que el cursor empiece por el primer registro, y no se quede trabado antes de este, luego de abrir el RS, puedes agregarle la linea RS.MoveFirst(), y luego si poner el código anterior.
Un saludo.
__________________
Add, never Remove
  #3 (permalink)  
Antiguo 24/06/2005, 15:23
Avatar de vhpc  
Fecha de Ingreso: mayo-2005
Mensajes: 66
Antigüedad: 20 años
Puntos: 0
De acuerdo gracias

Tenías razón lo que pasa es que estaba recorriendo el recorset y por alguna razón estaba enviando este al primer registro pero ya se soluciono...

es bueno contar con alguien que siempre esta dispuesto a ayudar a los demás..., te saludo y te doy las gracias mariano_donati...
  #4 (permalink)  
Antiguo 25/06/2005, 17:15
Avatar de PC's Troll  
Fecha de Ingreso: junio-2005
Ubicación: Caracas-Venezuela
Mensajes: 55
Antigüedad: 19 años, 11 meses
Puntos: 0
Exclamación Mismo Problema, Distinta Razón

Buenas noches.

Justamente ayer me dió el mismo problema cuando estaba usando tabla.GetRows y un amigo me ayudó y se resolvió el inconveniente... pero por alguna extraña razón, otra vez regresé a lo mismo y de verdad que no sé qué es lo que está mal, porque en esa parte no había hecho ningún cambio... de todos modos aquí dejo el código.

Lo que estoy intentando hacer es la parte de validación de la persona en la página, pero como me sigue dando líos, sólo estoy poniendo el Response.Write para ver si se está conectando adecuadamente y me está dando el registro que quiero.

La sentencia de SQL me la dió mi profesora de programación, si alguien sabe cómo tomar un solo registro (porque sólo existe uno) les agradecería de antemano que me lo dijesen.

Saludos.

Cita:
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">

<%
Public usuario, clave, contador
Dim DB, SQL, tabla
SQL = "Provider=SQLOLEDB;Persist Security Info=False;User ID=sa; Password=111;Initial Catalog=jorgedb;Data Source=xXxxXxxXXX"

set DB = Server.CreateObject("ADODB.Connection")
set tabla = Server.CreateObject("ADODB.Recordset")

DB.Open SQL
%>

<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>Untitled Document</title>
</head>

<body>
<form name="form1" action="initial.asp" method="post">
<p>Your name<input name="name1" type="text" size="20" maxlength="20">Your password<input name="pass1" type="password" maxlength="10"></p>
<p><input type="submit" name="ok" value="OK"></p>
<%

usuario = Request.Form("name1")
clave = Request.Form("pass1")


set tabla = DB.Execute("SELECT * FROM usuario WHERE login_usu = " & "'" & usuario & "'")
Response.Write(tabla("clave_usu"))

tabla.Close

%>
</form>

<form action="busqueda.asp" name="busca" title="busqueda" method="post">
<p>Búsqueda</p>
<input type="text" name="CI"><input type="submit" value="OK">
</form>
</body>
</html>
  #5 (permalink)  
Antiguo 25/06/2005, 21:29
 
Fecha de Ingreso: marzo-2005
Mensajes: 1.418
Antigüedad: 20 años, 1 mes
Puntos: 9
Bueno, antes que nada ahi no estás utilizando getRows(), tampoco te haría falta utilizarlo, ya que solamente vas a extraer un solo registro. Lo segundo que te puedo mencionar es que lo veo mal estructurado a tu código. Por ejemplo, creas una conexion a la base de datos y un RS y luego muestras el formulario de log in. La conexión y crear el RS en ese momento es totalmente innecesario, ya que no los vas a necesitar hasta que no envies el formulario a la página que lo procesa.
Otra cosa, la sentencia SQL también está mal si tu objetivo es confirmar que está ingresando un usuario registrado, ya que lo único que estás haciendo con ella es comprobar si existe ese usuario en la base de datos, pero nunca relacionas ese nombre de usuario con la contraseña. Una sentencia correcta, y la que comunmente se usa es "SELECT * FROM tabla_de_usuarios WHERE Nick = '" & Request.Form("Name1") & "' AND Clave = '" & Request.Form("Pass1") & "'". Además en esa sentencia también están mal concatenadas las cadenas.
También, hay una redundancia al crear dos RS. Para crear el RS basta con esta segunda linea que tenés set tabla = DB.Execute(sentencia_SQL). No hace falta la linea "set tabla = Server.CreateObject("ADODB.RecordSet")", ya que la otra linea justamente lo que te devuelve es un objeto RS.

Por otro lado, te recomiendo que hagas esto y pruebes si te funciona: en una página colocá el formulario de log in únicamente (y también veo que tienes uno de búsqueda, que también lógicamente lo podrías poner en esa página). El Action del formulario de log in tiene que apuntar hacia una página ASP que lo procese. Crea esa página, y hace toda la tarea necesaria para procesar los datos y comenta como te fue para que podamos ayudarte con algún posible error que te dé.
Un saludo!.
Suerte!.
__________________
Add, never Remove
  #6 (permalink)  
Antiguo 26/06/2005, 12:06
Avatar de PC's Troll  
Fecha de Ingreso: junio-2005
Ubicación: Caracas-Venezuela
Mensajes: 55
Antigüedad: 19 años, 11 meses
Puntos: 0
Gracias

Hey Mariano de verdad gracias, seguí tus consejos y cuando me dió un par de errores busqué otras posibles soluciones por la web ya me está trabajando bien.

El ejemplo que te había dado era el corto porque mi idea era que esa misma página procesara los datos pero justamente seguí tu consejo y es mejor hacerlo así y si el proceso es exitoso redireccionar al usuario y ya en vez de estar haciendo un *.asp engorroso y confuso.

Saludos y de nuevo gracias a tí y a todos aquellos quienes han leído el post.

PC's Troll
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 01:02.