Ir para conteúdo
Fórum Script Brasil
  • 0

BOF ou EOF são verdadeiros


Marcelo do GBT

Pergunta

Caros, sou novo na programação em asp, mas como já tenho o site pronto, apenas faço algumas alterações.

O problema é que esta ocorrendo um erro muito estranho, e não sei como resolver, por isso, peço ajuda a quem poder me ajudar.

O erro é o seguinte:

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

/guia/estatisticas/acessos.asp.

o tal acesso.asp é o seguinte:

<%

mes = request.querystring("mesdb")

ano = Year(now)

%>

<style type="text/css">

<!--

.link { color: #006633; text-decoration: none}

-->

</style>

<%

set conn = createobject("adodb.connection")

conn.open "provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("../contador/contador_acessos.mdb")

set rs = conn.execute("SELECT * FROM acessos where mesdb= '"&mes&"'")

%>

<body leftmargin="0" topmargin="0" marginwidth="0" marginheight="0">

<table width="150" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="218" valign="top">

<table border="0" width="150" bordercolor="#000033">

<tr>

<td width="51%" align="left" bgcolor="#CCFFE7" height="15"><b><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">M&ecirc;s:

</font></b><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><%=rs("mesdb")%></font><font face="Arial, Helvetica, sans-serif" size="2" color="#000000">&nbsp;

</font></td>

<td width="49%" align="center" bgcolor="#F0FFF8" height="15"><b><font face="Arial, Helvetica, sans-serif" size="1" color="#006633">Paginas

Clicadas</font></b></td>

</tr>

</table>

<%

dia_cat = 1

do while not rs.eof %>

<table width="150%" border="0" cellspacing="0" cellpadding="0">

<tr>

<td width="19%"><%If dia_cat = 1 then%>

<b>Dia:</b>

<% dia_cat = 0

End If%>

<%If dia_cat = 0 then%>

&nbsp;

<%End If%>

</td>

<td width="19%"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><%=rs("diadb")%></font>

</td>

<td width="60%" align="left" bgcolor="#F0FFF8" bordercolor="#000033"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><b><%=rs("hits")%></b></font></td>

<td width="2%">&nbsp;</td>

</tr>

</table>

<%

rs.movenext

loop

rs.close

conn.close

set rs = nothing

set conn = nothing

%>

</td>

</tr>

</table>

e o que faz o envio para o contador_acessos.mdb é o seguinte:

<%

diadb = Day(now)

mes = Month(now)

anodb = Year(now)

id = Day(now)

Select case mes

case 1

mesdb = "Janeiro"

case 2

mesdb = "Fevereiro"

case 3

mesdb = "Março"

case 4

mesdb = "Abril"

case 5

mesdb = "Maio"

case 6

mesdb = "Junho"

case 7

mesdb = "Julho"

case 8

mesdb = "Agosto"

case 9

mesdb = "Setembro"

case 10

mesdb = "Outubro"

case 11

mesdb = "Novembro"

case 12

mesdb = "Dezembro"

End Select

'-------------------------------------------------------------------------------------------------

if diadb = "" then

diadb = diadb

end if

'Conectando com o banco de dados...

set conn = createobject("adodb.connection")

conn.open "provider=microsoft.jet.oledb.4.0; data source=" & server.mappath("contador/contador_acessos.mdb")

set rs = conn.execute("select * from acessos where diadb = '" & diadb & "'")

if rs.eof then

v = 1

conn.execute "INSERT INTO acessos(id, diadb, mesdb, anodb, hits) VALUES ('"&id&"','"&diadb&"','"&mesdb&"','"&anodb&"',"&v&")"

else

conn.execute("UPDATE acessos SET hits = hits +1 WHERE id = '" & id & "'")

end if

'Fecha as conexões

rs.close

conn.close

set rs = nothing

set conn = nothing

%>

Então o que pode estar acontecendo???

Link para o comentário
Compartilhar em outros sites

11 respostass a esta questão

Posts Recomendados

  • 0
Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Esse erro ocorre quando o ponteiro do registro da tabela é forçado a ler o registro após o registro final.

rs.movenext

loop

rs.close

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Caro Jhonas,

E como devo fazer para corrigir este erro???

Por favor ajude-me!

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

Esse erro ocorre quando o ponteiro do registro da tabela é forçado a ler o registro após o registro final.

rs.movenext

loop

rs.close

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
E como devo fazer para corrigir este erro???

do while not rs.eof %>
<table width="150%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="19%"><%If dia_cat = 1 then%>
<b>Dia:</b>
<% dia_cat = 0
End If%>
<%If dia_cat = 0 then%>
&nbsp;
<%End If%>
</td>
<td width="19%"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><%=rs("diadb")%></font> 
</td>
<td width="60%" align="left" bgcolor="#F0FFF8" bordercolor="#000033"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><b><%=rs("hits")%></b></font></td>
<td width="2%">&nbsp;</td>
</tr>
</table>
<% 
rs.movenext 
loop 
rs.close
Logo após o < do while not rs.eof > voce deve testar se o fim o arquivo foi encontrado ... se não colocar esse teste para finalizar o loop, uma nova tentativa de ler o registro será comandada pelo while e ocorrerá o erro
if rs.eof then 

   rs.close //  ou o comando para sair do loop

end if

abraço

Link para o comentário
Compartilhar em outros sites

  • 0

Caro Jhonas,

Eu copie e colei o que voce dise para eu fazer, mas esta dando o mesmo erro, será que voce pode colocar o codigo inteiro para que consiga fazer este negocio rodar?

Por favor, me de certinho, pois como falei, sou novo em asp!

Obrigado

E como devo fazer para corrigir este erro???

do while not rs.eof %>
<table width="150%" border="0" cellspacing="0" cellpadding="0">
<tr>
<td width="19%"><%If dia_cat = 1 then%>
<b>Dia:</b>
<% dia_cat = 0
End If%>
<%If dia_cat = 0 then%>
&nbsp;
<%End If%>
</td>
<td width="19%"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><%=rs("diadb")%></font> 
</td>
<td width="60%" align="left" bgcolor="#F0FFF8" bordercolor="#000033"><font face="Arial, Helvetica, sans-serif" size="2" color="#006633"><b><%=rs("hits")%></b></font></td>
<td width="2%">&nbsp;</td>
</tr>
</table>
<% 
rs.movenext 
loop 
rs.close
Logo após o < do while not rs.eof > voce deve testar se o fim o arquivo foi encontrado ... se não colocar esse teste para finalizar o loop, uma nova tentativa de ler o registro será comandada pelo while e ocorrerá o erro
if rs.eof then 

   rs.close //  ou o comando para sair do loop

end if

abraço

Link para o comentário
Compartilhar em outros sites

  • 0
marcelo, qual a linha do erro??

Tipo de erro:

ADODB.Field (0x80020009)

BOF ou EOF são verdadeiros, ou o registro atual foi excluído. A operação solicitada pelo aplicativo requer um registro atual.

/guia/estatisticas/acessos.asp.

este é o erro, mas ele não indica linha alguma, apenas da o erro!

Link para o comentário
Compartilhar em outros sites

  • 0

tem certeza, q não diz a linha?? normalmente ele sempre passa o numero da linha em q ocorre o erro.

de qualquer forma, olha essa parte do codigo aqui:

"SELECT * FROM acessos where mesdb= '"&mes&"'"

você tem certeza q ele ta encontrando dados referente ao mes q você ta passando??

porque se ele não encontrar, ele vai dar erro mais pra baxo.

Link para o comentário
Compartilhar em outros sites

  • 0
tem certeza, q não diz a linha?? normalmente ele sempre passa o numero da linha em q ocorre o erro.

de qualquer forma, olha essa parte do codigo aqui:

"SELECT * FROM acessos where mesdb= '"&mes&"'"

você tem certeza q ele ta encontrando dados referente ao mes q você ta passando??

porque se ele não encontrar, ele vai dar erro mais pra baxo.

Caro Kuroi,

Será que não daria para ser mais claro, pois eu não manjo de asp, e voce mandar eu olhar a linha, não significa nada, pois o que preciso, é que me diga exatamente o que tenho que fazer, ou mudar, entende?

Agradeço se for mais preciso!

Link para o comentário
Compartilhar em outros sites

  • 0

então é bom estudar um poco ou falar pro seu cliente q não da pra você fazer isso.

como você quer dar continuidade num site em asp sem saber asp??

se fosse assim, eu não precisava ter estudado nd a vida intera...

de qualquer modo, acho q esse erro pode estar acontecendo por ele não estar encontrando o registro no banco de dados.

o q esta sendo passado na querystring?? (a querystring são parametros passados no final do endereco da pagina. por exemplo, olha la em cima no seu navegador o endereco desse tópico. no caso, ?showtopic=146374 é a querystring).

tem q estar sendo passada uma querystring referente a um mes q exista no banco de dados.

entretanto, depois de abrir o body, adicione a seguinte linha:

<% If Not rs.EOF Then %>
e antes de fechar o body, adicione a linha:
<% End If %>

e veja se não para de dar erro.

Link para o comentário
Compartilhar em outros sites

  • 0
então é bom estudar um poco ou falar pro seu cliente q não da pra você fazer isso.

como você quer dar continuidade num site em asp sem saber asp??

se fosse assim, eu não precisava ter estudado nd a vida intera...

de qualquer modo, acho q esse erro pode estar acontecendo por ele não estar encontrando o registro no banco de dados.

o q esta sendo passado na querystring?? (a querystring são parametros passados no final do endereco da pagina. por exemplo, olha la em cima no seu navegador o endereco desse tópico. no caso, ?showtopic=146374 é a querystring).

tem q estar sendo passada uma querystring referente a um mes q exista no banco de dados.

entretanto, depois de abrir o body, adicione a seguinte linha:

<% If Not rs.EOF Then %>
e antes de fechar o body, adicione a linha:
<% End If %>

e veja se não para de dar erro.

Caro Kuroi,

Agradeço sua atenção e presteza, mas não consegui realmente, pois continua dando erros.

Mas também vou aceitar seu conselho, e vou devolver o serviço, pois como voce mesmo disse, como posso querer fazer algo sem conhecimento, e como meu conhecimento é outro, não adianta eu querer fazer algo a toque de caixa.

Bem, também acho que um forum que só sirva para quem já sabe, não faz muito sentido, pois eu acredito que forum, tem que ser para quem esta inciando, pois quem sabe, não precisa de ajuda, concorda?

Muito obrigado!

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,3k
    • Posts
      652,3k
×
×
  • Criar Novo...