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

Error:El valor de BOF o EOF es True, o el actual registro se eliminó

Estas en el tema de Error:El valor de BOF o EOF es True, o el actual registro se eliminó en el foro de ASP Clásico en Foros del Web. Hola, Tengo un formulario en el que en una caja de texto se escribe un numero de pedido y el action del formulario va a ...
  #1 (permalink)  
Antiguo 17/02/2005, 11:10
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Error:El valor de BOF o EOF es True, o el actual registro se eliminó

Hola,

Tengo un formulario en el que en una caja de texto se escribe un numero de pedido y el action del formulario va a otra página que recoge ese numero de pedido para mostrar sus detalles en cajas de texto:

Set Conn = Server.Createobject("ADODB.Connection")
Set Ob_RS = Server.CreateObject ("ADODB.RecordSet")
Conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("basedatos.mdb")

Ob_Rs.Open "select * from [pedidos] where num_pedido='"&Request.Form("num_pedido")&"'", conn


Pero me da este error:

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


¿Alguna idea?
  #2 (permalink)  
Antiguo 17/02/2005, 11:24
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
Antes de intenar acceder a los (supuestos) datos devueltos por la consulta, tenés que preguntar si el recordset tiene datos.

Por ejemplo, antes de hacer un response.write de algún campo de tu tabla o asignar ese dato a una variable, debés preguntar esto:

If Ob_Rs.EOF then 'si es fin de archivo del objeto recordset
' si entró aquí es porque no hay datos..
Else
'todo lo que necesites hacer con tus datos.. que si estás aquí es porque los hay.
End if
__________________
...___...
  #3 (permalink)  
Antiguo 17/02/2005, 11:40
 
Fecha de Ingreso: febrero-2005
Ubicación: Peru
Mensajes: 3
Antigüedad: 19 años, 3 meses
Puntos: 0
Hola,
Debes de tener cuidado formes tu sentencia SQL

Ob_Rs.Open "select * from [pedidos] where num_pedido='"&Request.Form("num_pedido")&"'", conn

Si lo haces así puedes tener problemas, te pueden agregar caracteres extraños y hace que tu programa termine en error, si usas bases de datos como el sqlserver, oracle, etc. esas tecnicas se llaman "SQL Injection"

dim txtNumPedido
txtNumPedido = Request.Form("num_pedido")
'Valida con una funcion y despues de validar puedes recien crear tu QUERY
  #4 (permalink)  
Antiguo 18/02/2005, 03:26
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Me sigue sin funcionar. He hecho una prueba más sencilla, simplemente que me muestr el nombre de la persona que tiene de id el número 1234.
El id es un campo texto de la base de datos:

Set Conn = Server.Createobject("ADODB.Connection")
Set Ob_RS = Server.CreateObject ("ADODB.RecordSet")
Conn.open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=" & Server.MapPath("bd.mdb")

Ob_Rs.Open "select * from [tabla] where id='1234'", conn

Response.Write(Ob_RS("nombre"))


Y me da este error:

ADODB.Recordset (0x800A0CC1)
No se encontró el elemento en la colección que corresponde con el nombre o el ordinal pedido.
  #5 (permalink)  
Antiguo 18/02/2005, 05:13
 
Fecha de Ingreso: febrero-2005
Ubicación: Santiago de Chile
Mensajes: 5
Antigüedad: 19 años, 3 meses
Puntos: 0
Ese mensaje significa que el Recordset (Ob_Rs) no encontró la columna llamada "id" ó "nombre"

Ob_Rs.Open "select * from [tabla] where id='1234'", conn ' se llama id este campo en la [tabla]...???
Response.Write(Ob_RS("nombre")) ' se llama nombre este campo en la [tabla]...???
  #6 (permalink)  
Antiguo 18/02/2005, 05:48
 
Fecha de Ingreso: abril-2004
Mensajes: 53
Antigüedad: 20 años, 1 mes
Puntos: 0
Has mirado que el nombre del campo del formulario al que luego pides la información tenga el mismo nombre o esten igual escritos que cuando luego le llamas en el Request.Form("nombrecampo")
  #7 (permalink)  
Antiguo 18/02/2005, 06:12
Avatar de Laika  
Fecha de Ingreso: octubre-2001
Mensajes: 1.376
Antigüedad: 22 años, 7 meses
Puntos: 0
Ese tema ya lo he solucionado.

Si, los nombres no eran los correctos. Un despiste

Gracias,

Laika
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 20:58.