• 0
Sign in to follow this  
ricardovoigt

Bof E Eof

Question

<!--#include file="conecta_banco.asp"-->

<% set listar = server.CreateObject("ADODB.Recordset")

listar.open "Select * from socios where mostrar='sim' order by nome asc",conexao

<%dim conta%>

<table border = 0 align="center" cellpadding="2" cellspacing="2" bordercolor="#000000">

<%

do while not listar.eof%>

<%for conta = 1 to contador step 1%>

<% 'aqui vem a tabela com os dados, o for serve para dividir em linhas e colunas.%>

.....

.....

<%if conta mod 2 = 0 then%>

<tr>

<%end if%>

<%listar.movenext%><%next%><%loop%>

</table>

</body>

</html>

<%end if%>

dá erro no sql, dizendo que bof e eof são verdadeiros. mas não lista

Share this post


Link to post
Share on other sites

6 answers to this question

Recommended Posts

  • 0

Quando ambos são verdadeiros é porque a consulta não retornou nenhum registro. Verifique se a sua instrução SQL está correta e se ela realmente retorna algum registro.

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

tenta assim:

<!--#include file="conecta_banco.asp"-->
<% set listar = server.CreateObject("ADODB.Recordset")
listar.open "Select * from socios where mostrar='sim' order by nome asc",conexao

<%dim conta%>
<table border = 0 align="center" cellpadding="2" cellspacing="2" bordercolor="#000000">

<%If listar.EOF or listar.BOF Then%>

NENHUM RESGISTRO ENCONTRADO!

<%
else
do while not listar.eof%>
<%for conta = 1 to contador step 1%>
<% 'aqui vem a tabela com os dados, o for serve para dividir em linhas e colunas.%>

.....
.....

<%if conta mod 2 = 0 then%>
<tr>
<%end if%>

<%listar.movenext%><%next%><%loop%>
</table> 
</body>
</html>
<%end if
end if%>

Share this post


Link to post
Share on other sites
  • 0
Guest - ricardovoigt -

cara mesmo 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.

/area/visualizar_socios.asp

to colando todo o código :

<%@LANGUAGE="VBSCRIPT"%>

<% if session("sociologado") <> true then

response.Redirect("index.asp?erro=erro2")

elseif not session("socioid") <> "" then

response.redirect("index.asp?erro=erro3")

else

%>

<!--#include file="conecta_banco.asp"-->

<% set listar = server.CreateObject("ADODB.Recordset")

listar.open "Select * from socios where mostrar = 'sim' order by nome asc",conexao

set contar = server.CreateObject("ADODB.Recordset")

contar.open "Select count(*) as total from socios",conexao

contador = contar("total")

%>

<html>

<head>

<title>Visualização de Sócios</title>

<style type="text/css">

<!--

a:link {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

color: #000000;

text-decoration: none;

border: none;

}

a:visited {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

text-decoration: none;

border: none;

color: #000000;

}

a:hover {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

color: #000000;

text-decoration: none;

border: none;

}

a:active {

font-family: Verdana, Arial, Helvetica, sans-serif;

font-size: 10px;

color: #000000;

border: none;

text-decoration: none;

}

-->

</style>

&lt;script language="JavaScript" type="text/JavaScript">

<!--

function MM_popupMsg(msg) { //v1.0

alert(msg);

}

//-->

</script>

</head>

<body>

<%dim conta%>

<table border = 0 align="center" cellpadding="2" cellspacing="2" bordercolor="#000000">

<%If listar.EOF or listar.BOF Then%>

NENHUM RESGISTRO ENCONTRADO!

<%else

do while not listar.eof%>

<%for conta = 1 to contador step 1%>

<td>

<table width="345" height="87" border="1" cellspacing="1" bordercolor="#804040">

<tr>

<td width="83"><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Sócio.:</font></div></td>

<td width="183"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">

<%=listar("nome")%> <br>

</font></td>

<td width="65" rowspan="4" align="left" valign="top"><img src="sociosfotos/<%=listar("foto")%>" width="65" height="80"></td>

</tr>

<tr>

<td height="18"> <div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Registro.:</font></div></td>

<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"> <%=listar("registro")%>

</font></td>

</tr>

<tr>

<td height="21"> <div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Segmento.:</font></div></td>

<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif">

<% tipo = listar("linha")

if tipo = "cor" then

text = "Canários de Cor"

elseif tipo = "porte" then

text = "Canários de Porte"

elseif tipo = "corporte" then

text = "Canários de Cor e Porte"

elseif tipo = "periquitos" then

text = "Periquitos"

elseif tipo = "psiporte" then

text = "Psitascídios e Porte"

end if

response.write text

%>

</font></td>

</tr>

<tr>

<td><div align="right"><font size="2" face="Verdana, Arial, Helvetica, sans-serif">Contatar.:</font></div></td>

<td><font size="2" face="Verdana, Arial, Helvetica, sans-serif"><a href=contatosocio.asp?id=<%=listar("id")%>>clique

aqui</a> </font></td>

</tr>

<tr>

<td colspan="3"><div align="right"><img src="icones/46.gif" width="20" height="16"><a href="alterar_socio.asp?cod=<%=listar("id")%>">Alterar</a>

<img src="icones/delete.gif" width="16" height="16"> <a href="excluir_socio.asp?cod=<%=listar("id")%>" onClick="MM_popupMsg('Voce tem certeza que desejas excluir??')">Excluir</a></div></td>

</tr>

</table>

</td>

<%if conta mod 2 = 0 then%>

<tr>

<%end if%>

<%listar.movenext%><%next%><%loop%>

</table>

</body>

</html>

<%end if%>

<%end if%>

veja se você consegue me ajudar.. eu to pirando já..

abraçoo!!!

Share this post


Link to post
Share on other sites
  • 0

cara mesmo 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.
/area/visualizar_socios.asp

Cara é assim... o "do while" tem de ser executado ao menos uma vez. Se você tiver chamando este comando e não tiver nenhum registo no recordset atual, então o erro é gerado.

usa o "while".

Share this post


Link to post
Share on other sites
  • 0

Do While e While são a mesma coisa. A diferença seria entre usar estes ou Loop While (no qual realmente a execução ocorreria uma vez). O que eu aconselho é dar uma limpada no código (retire toda a parte HTML) e fazer o teste novamente. Caso ocorra o erro, mostre exatamente qual é a linha em que ele ocorre (no código limpo).

Abraços,

Graymalkin

Share this post


Link to post
Share on other sites
  • 0

Olá...espero que ajude voê a entender melhor como funciona uma página de loop.

Tomando liberdade em comentar a colocação sua sobre SQL, Olha as vezes é complicado programar sim, mas uma é basica em programação, tudo que você determinar que seja feito em um script será feio, porem temos que respeitar certas regras e para respeitar regras devemos conhece-la, eu aconselho você a buscar onde você errou com este script, você ira aprender e muito sobre regras, tudo o que você ver e não entender questione que você ira encontrar a resposta no google ou aqui mesmo, vou te dar um exemplo:

Você usou esta colocação para capturar os numeros de registros:

"Select count(*) as total from socios" ela não está errada porem com colocações erradas.

este tipo de informação pode ser definida na propria conexão utilizando o .RecordCount desta forma:

Nome_atribuido_a_informação(ex: Registro) = NOME_DO_SET.RecordCount

Gostaria de lembrar você que o SQL fala inglês e executa em inglês, quanto mais você entende inglês e organiza a forma que você solicita isto, melhor será o resultado, não tente inventar ou “otimizar” de mais o que você faz, este termo é útil em determinadas ocasiões onde o número de Registro é acima de 1000 registros em uma única tabela, porem o número de dados solicitados influencia na lentidão, por isto muitos otimizam o que não terá grandes resultados, otimizar é dizer de forma direta e pratica ao motor do banco de dados o que ele deve fazer, você poderia dizer:

Por favor, pregue a maçã que esta na cesta ou maça cesta, por favor.

Seria mais ou menos isto.

SELECT PorFavor, Maça FROM Cesta

Ou

SELECT * FROM Cesta WHERE Maça = 'PorFavor' ORDER BY Pegue ASC

Isto é otimizar, uma forma rápida e objetiva de se comunicar com o motor do banco de dados.

Dica:

Veja o motor do banco de dados como um amigo que você conversa com ele via chat, isto ajuda muito você entender como o SQL entende o que você solicita(Eu como sou meio maluco, trato o motor como uma pessoa, foi mais fácil para mim entender como ele faz as coisas e em que ordem).

Forte abraço e fica com Deus.

<table width="35%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> 
<td height="70"> <table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr> 
<td height="70"> <table width="100%" border="0" cellspacing="1" cellpadding="0">
<tr> 
<td height="122" valign="middle" bgcolor="#FFFFFF"> 
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0" class="12p">
<tr> 
<td height="19">
<!-- Em numeros de paginas é definido o numero de itens que será apresentado em cada pagina -->
<%
Const Pagina_Numeros = 1
If Request.QueryString("pagina") = "" Then
BJT_AtualPagina = 1
Else
BJT_AtualPagina = CInt(Request.QueryString("pagina"))
End If
SQL = "SELECT * FROM socios WHERE mostrar = 'sim' ORDER BY nome ASC"
Set Que_Deus_Abençoe_o_Brasil = Server.CreateObject("ADODB.RecordSet")
Que_Deus_Abençoe_o_Brasil.PageSize  = Pagina_Numeros
Que_Deus_Abençoe_o_Brasil.CacheSize = Pagina_Numeros
Que_Deus_Abençoe_o_Brasil.CursorLocation = 3
Que_Deus_Abençoe_o_Brasil.Open sql, conexao
BJT_Registros = Que_Deus_Abençoe_o_Brasil.RecordCount
BJT_Paginas   = Que_Deus_Abençoe_o_Brasil.PageCount 
%>
Numeros de Registros 
<%= BJT_Registros%>
</td>
</tr>
<tr> 
<td height="103">
<%If BJT_Registros = 0 Then %>
<table width="100%" border="0" align="center" cellpadding="0" cellspacing="0">
<tr>
<td class=12p><div align="center"> Não foi encontrado nenhum registro relacionado a sua busca.<br></div></td>
</tr>
</table>
<%
Else
Que_Deus_Abençoe_o_Brasil.AbsolutePage = BJT_AtualPagina
Conta = 0
Do While not Que_Deus_Abençoe_o_Brasil.EOF And Que_Deus_Abençoe_o_Brasil.AbsolutePage = BJT_AtualPagina
Conta = Conta + 1
IF Conta = 1 THEN
Cor = "#C9E4E9"
else
Cor = "#D6F1F8"
END If
%>
<br> 
<table width="100%" border="0" cellspacing="0" cellpadding="0">
<tr> 
<td>
<!-- ------------------------------------------------------------------------------------------------------------------------ -->

<!-- Colque aqui o conteudo do loop  -->
<!-- Teste Inicio-->
ID -  <%=listar("id")%>
<!-- Teste Fim-->

<!-- ------------------------------------------------------------------------------------------------------------------------ -->
</td>
</tr>
</table>
<%
Que_Deus_Abençoe_o_Brasil.MoveNext
Loop
%>
</td>
</tr>
</table></td>
</tr>
<tr> 
 <td height="45" valign="top" bgcolor="#FFFFFF"> <table width="100%" border="0" cellspacing="0" cellpadding="0"  align="center">
<tr bgcolor="#FFFFFF"> 
<% If BJT_AtualPagina > 1 Then %>
<td width='10%' height="37" align=center valign="middle"> 
<p><a href="COLOQUE_AQUI_O_NOME_DA_PAGINA_QUE_ESTA_ESTE_ESCRIPT.asp?pagina=<%=BJT_AtualPagina-1%>">Voltar</a></p></td>
<%End If%>
<%If BJT_AtualPagina < BJT_Paginas Then %>
 <td width='76%' align=center><table width="50" border="0" cellspacing="0" cellpadding="4"  align="center">
<tr bgcolor="#FFFFFF"> 
<%For I = 1 To BJT_Paginas%>
<%If I = BJT_AtualPagina Then%>
<td><font class=12p><b> <font size="-1" class=a9><%=I%> 
</font></b></font></td>
<%ELSE%>
<td><a class=12a href="COLOQUE_AQUI_O_NOME_DA_PAGINA_QUE_ESTA_ESTE_ESCRIPT.asp?pagina=<%=I%>"> 
<font size="-1" class=a9><%= I %></font></a></td>
<%End If%>
<%Next%>
</tr>
</table></td>
<td width='14%' align=center valign="middle"><a href="COLOQUE_AQUI_O_NOME_DA_PAGINA_QUE_ESTA_ESTE_ESCRIPT.asp?pagina=<%=BJT_AtualPagina+1%>"><font size="-1"></font>Próxima </a></td>
<%End If%>
<%End If%>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table></td>
</tr>
</table>

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Answer this question...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this