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

El valor de BOF o EOF es True

Estas en el tema de El valor de BOF o EOF es True en el foro de ASP Clásico en Foros del Web. Saludos a todos, tengo un error con el que no he podido dar, el error es el siguiente: ADODB.Field error '80020009' El valor de BOF ...
  #1 (permalink)  
Antiguo 30/04/2008, 10:16
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
El valor de BOF o EOF es True

Saludos a todos, tengo un error con el que no he podido dar, el error es el siguiente:

ADODB.Field error '80020009'

El valor de BOF o EOF es True, o el actual registro se eliminó; la operación solicitada requiere un registro actual.

Código PHP:
sql_ch "Select MAX(fechaEntrada) as ultima_entrada from checador where id_empleado = "&tempId&" "        
set rs server.createobject("adodb.recordset")
set rs mCon.execute(sql_ch)
ultima_entrada rs.Fields("ultima_entrada")
sql_ch "Select * from checador where (Id_empleado = "&tempId&" and fechaEntrada = #"&ultima_entrada&"#) "    
set rs server.createobject("adodb.recordset")
set rs mCon.execute(sql_ch
Primero selecciono con la sentencia MAX de SQL la última fecha del empleado para después con esa fecha y con la id del empleado obtener la información de los demás campos pero justo ahi me da el error, lo raro que me parece a mi es que anteriormente tengo una sentencia idéntica y no me da problemas, la anteior es:
sql_ch = "Select * from checador WHERE (Id_empleado = "&tempId&" AND fechaEntrada = #"&fech&"#) "

Bien, pues espero su ayuda, estos problemas tan raros no me pasan en PHP.

Última edición por dalbeyond; 30/04/2008 a las 10:18 Razón: Posteé el mensaje deseo que el código se vea coloreado
  #2 (permalink)  
Antiguo 30/04/2008, 10:36
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: El valor de BOF o EOF es True

set rs = mCon.execute(sql_ch) <- Esta instrucción NO REGRESO registros
ultima_entrada = rs.Fields("ultima_entrada") <- Aquí intentas leer un registro que NO existe.


Revisa el query que no regresa registros.

Saludos
  #3 (permalink)  
Antiguo 30/04/2008, 10:53
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: El valor de BOF o EOF es True

Gracias, pero el registro si se encuentra en las tabla:

Esta es mi tabla:

id_checador id_empleado fechaEntrada horaEntrada fechaSalida horaSalida
1 21 02/04/2008 10:23 a.m.
2 21 01/04/2008 10:30 a.m. 01/04/2008 05:35 p.m.

Partiendo de aqui desea sacar la fecha de la última entrada del empleado con id_empleado = 21 con la sentencia MAX, hasta ahi todo bien, pero deseo obtener la información de los demás campos, asi que

Código PHP:
tempId 21 
Select MAX(fechaEntrada) as ultima_entrada from checador where id_empleado = "&tempId&"

Código PHP:
ultima_entrada 02/04/2008 
ahora la sentencia SQL es:

Código PHP:
Select from checador where (Id_empleado "&tempId&" and fechaEntrada #"&ultima_entrada&"#) 
Que podría estar pasando?
  #4 (permalink)  
Antiguo 30/04/2008, 12:10
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: El valor de BOF o EOF es True

No pones la linea donde marca error, pero si es donde tienes ultima_entrada = rs.Fields("ultima_entrada"), el fallo es por lo que te dije, no hay otra.

Simplemente compruébalo con esto:

Cita:
...
sql_ch = "Select MAX(fechaEntrada) as ultima_entrada from checador where id_empleado = "&tempId&" "
response.write sql_ch
response.end
la consulta que se imprima, cópiala, págala y ejecútala en el analizador de consultas de lo que uses y comprobaras que no regresa datos.

Ahora, si el error no es en esa linea, hubiera sido útil saber en cuál.

Saludos
  #5 (permalink)  
Antiguo 30/04/2008, 12:44
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: El valor de BOF o EOF es True

Es cierto, no he dicho donde se encuentra el error, en realidad el problema no es con "ultima_entrada" si no más adelante, ahora explico: esta es mi tabla:




La primera sentencia que hago es:
Código:
tempId = 21
sql_ch = "Select MAX(fechaEntrada) as ultima_entrada from checador where id_empleado = "&tempId&" "		
set rs = server.createobject("adodb.recordset")
set rs = mCon.execute(sql_ch)
ultima_entrada = rs.Fields("ultima_entrada")
Lo cual ultima_entrada es igual a = 20/04/2008 para después consultar
En esta parte de código es el error:
Código:
sql_ch = "Select * from checador WHERE (Id_empleado = "&tempId&" AND fechaEntrada = #"&ultima_entrada&"#) "	
response.Write(sql_ch)	
set rs = server.createobject("adodb.recordset")
set rs = mCon.execute(sql_ch)
Así que access dice no delvolver registro alguno, pero si vemos la tabla, claro que si hay registro, por ejemplo, lo mismo pero en MySql:



y en access no me regresa nada.
Gracias por las respuestas, a ver si me pudieras o pudieran orientar. Espero me halla explicado.
  #6 (permalink)  
Antiguo 30/04/2008, 13:01
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: El valor de BOF o EOF es True

Entonces finalmente era cierto, no te regresa nada tu consulta y al acceder a un campo inexistente te marca error.

Entonces el problema es saber por qué no te regresa nada si en MySQL si lo hace

Sería útil saber el contenido de sql_ch, sabes ...

Cita:
sql_ch = "Select * from checador WHERE (Id_empleado = "&tempId&" AND fechaEntrada = #"&ultima_entrada&"#)"
response.write sql_ch
response.end
Y luego que ejecutaras esa consulta resultante en el access, si no te regresa datos, entonces debes de verificar el formato de la fecha, ver si las almohadillas (#) estan correctamente usadas, etc. Es decir, el problema ya no es de ASP, sino de como le mandas la consulta al access.
Ya solo queda que hagas pruebas con esa consulta en el editor del access.

Saludos
  #7 (permalink)  
Antiguo 30/04/2008, 15:39
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: El valor de BOF o EOF es True

He quedado algo resigando a intertar hacer lo que deseao de otra forma, he ejecutado la consulta en access e intentado de diferentes formas pero no me anda, jejejejej, si encuentro la solución por aquí estaré comentando. Gracias por las respuestas.
  #8 (permalink)  
Antiguo 30/04/2008, 16:20
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: El valor de BOF o EOF es True

Lo raro es que solo cuando son fechas mayores del dia 14 si muestra el resultado. En fin.
  #9 (permalink)  
Antiguo 30/04/2008, 17:53
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: El valor de BOF o EOF es True

mmmmm

¿no tendras formato mm/dd/aaaa en access y en ASP dd/mm/aaaa o algo así?
  #10 (permalink)  
Antiguo 01/05/2008, 16:59
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
Re: El valor de BOF o EOF es True

Tengo bien los formatos, pero en cuanto lo solucione lo comentaré. Gracias
  #11 (permalink)  
Antiguo 02/05/2008, 08:06
Avatar de Myakire
Colaborador
 
Fecha de Ingreso: enero-2002
Ubicación: Centro de la república
Mensajes: 8.849
Antigüedad: 23 años, 3 meses
Puntos: 146
Re: El valor de BOF o EOF es True

Con esa misma seguridad decías de que tu consulta si regresaba datos y ya ves , mejor revísalo con calma por que lo más probable es que eso sea por lo que comentas

Cita:
Lo raro es que solo cuando son fechas mayores del dia 14 si muestra el resultado
  #12 (permalink)  
Antiguo 02/05/2008, 09:56
 
Fecha de Ingreso: junio-2006
Mensajes: 39
Antigüedad: 18 años, 10 meses
Puntos: 0
De acuerdo Re: El valor de BOF o EOF es True

Bien, ya encontré la solución, era algo parecido a lo que me decías con respecto a las fechas de dd/mm/aa y mm/dd/aa. Yo no sabía esto de access, siempre trabajo con MySql, el caso es que al introducir datos a access las introduce de manera dd/mm/aa pero a la hora de consultarlas es de la maneta #mm/dd/aa#, cosa rara que de la que no estaba enterado, pero así es, jeje. Gracias. Aunque este problema ya debería de ir en el área de bases de datos.
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 00:11.