Foros del Web

Foros del Web (http://www.forosdelweb.com/)
-   ASP Clásico (http://www.forosdelweb.com/f15/)
-   -   El valor de BOF o EOF es True (http://www.forosdelweb.com/f15/valor-bof-eof-true-581610/)

dalbeyond 30/04/2008 10:16

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.

Myakire 30/04/2008 10:36

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

dalbeyond 30/04/2008 10:53

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?

Myakire 30/04/2008 12:10

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

dalbeyond 30/04/2008 12:44

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:

http://www.inreddemexico.com/checador.JPG


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:

http://www.inreddemexico.com/checador2.JPG

y en access no me regresa nada.
Gracias por las respuestas, a ver si me pudieras o pudieran orientar. Espero me halla explicado.

Myakire 30/04/2008 13:01

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

dalbeyond 30/04/2008 15:39

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.

dalbeyond 30/04/2008 16:20

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.

Myakire 30/04/2008 17:53

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í?

dalbeyond 01/05/2008 16:59

Re: El valor de BOF o EOF es True
 
Tengo bien los formatos, pero en cuanto lo solucione lo comentaré. Gracias

Myakire 02/05/2008 08:06

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 :-D, 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

dalbeyond 02/05/2008 09:56

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.


La zona horaria es GMT -6. Ahora son las 08:52.

Desarrollado por vBulletin® Versión 3.8.7
Derechos de Autor ©2000 - 2026, Jelsoft Enterprises Ltd.