none
Não funciona RRS feed

  • Pergunta

  • Bom dia Pessoal,

    Estou tendo um problema para exibir os dados do banco em uma página, o que eu preciso e listar as Categorias, que ficam dentro de uma tabela, de acordo com o código da categoria listar os Fóruns, que ficam dentro de outra tabela, e de acordo com o código do fórum, listar as Threads, que ficam dentro de outra tabela.

    Resumindo: Tenho 3 tabelas que são - Categorias; Foruns; Threads

    O problema é que, quando coloco para exibir as threads, aparece o erro abaixo:

  • 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.
    /novo/defaultforum.asp

    Segue o código abaixo, vocês irão notar que coloquei uma linha comentada, se eu tirar esse comentário já não funciona. O que pode ser?


  •    <table border="1" width="100%">
        <tr>
         <td colspan="5">&nbsp;</td>
        </tr>
        <tr>
         <td width="4%">&nbsp;</td>
         <td width="61%">
         <p align="center">Fóruns</td>
         <td width="21%">
         <p align="center">Última Thread</td>
         <td width="11%">
         <p align="center">Threads</td>
         <td width="9%">
         <p align="center">Posts</td>
        </tr>
    <%
    ' ## Lista todas as categorias de fóruns
    Set cmdCategorias = Server.CreateObject("ADODB.Command")
    cmdCategorias.ActiveConnection = DataConn
    cmdCategorias.CommandText = "SELECT * FROM categoriasforum"
    cmdCategorias.CommandType = 1
    Set rsCategorias = Server.CreateObject("ADODB.Recordset")
    rsCategorias.Open cmdCategorias, , 0, 1
    %>

    <% Do While Not rsCategorias.EOF %>

     <%
     ' ## Lista os fóruns por categoria
     Set cmdForum = Server.CreateObject("ADODB.Command")
     cmdForum.ActiveConnection = DataConn
     cmdForum.CommandText = "SELECT * FROM foruns where categoria = " & rsCategorias("CodigoCategoria")
     cmdForum.CommandType = 1
     Set rsForum = Server.CreateObject("ADODB.Recordset")
     rsForum.Open cmdForum, , 0, 1
     %>


        <tr>
         <td width="97%" colspan="5">&nbsp;&nbsp;<% =rsCategorias("Categoria") %></td>
        </tr>
     <% Do While Not rsForum.EOF %>
      
      <% 
      ' ##Retorna a última Thread de cada Forum
      Set cmdThreads = Server.CreateObject("ADODB.Command")
      cmdThreads.ActiveConnection = DataConn
      cmdThreads.CommandText = "SELECT * FROM Threads WHERE CodigoForum = " & rsForum("CodigoForum")
      cmdThreads.CommandType = 1
      Set rsThreads = Server.CreateObject("ADODB.Recordset")
      rsThreads.Open cmdThreads, , 0, 1
      %>

        <tr>
         <td width="4%">&nbsp;</td>
         <td width="61%">&nbsp;<% =rsForum("TituloForum") %><br>
         <% =rsForum("DescricaoForum") %>
         </td>
         <td width="19%">&nbsp;<%' =rsThreads("TituloThread") %></td>
         <td width="19%">&nbsp;</td>
         <td width="19%">&nbsp;</td>
        </tr>
     <%
     rsForum.MoveNext
     loop
     %>

    <%
    rsCategorias.MoveNext
    loop
    %>

       </table>


    Como disse, eu eu tirar o comentário dessa linha que está marcada, já era. ele dá aquele erro que eu coloquei lá em cima.

    No aguardo,


quinta-feira, 22 de março de 2007 14:16

Respostas

  • Éder, sua consulta na tabela de threads não retornou registro nenhum...

    e ainda assim vc usa rs("titulo_thread")

    o erro ocorre porque ele não encontra o campo titulo_thread porque não existe nenum registro...

    antes dessa linha digita

    <% if not rs.eof then %>

     <td width="19%">&nbsp;<% =rsThreads("TituloThread") %></td>

    <%end if%>

    obs: pela sua lógica só vai exibir a primeira thread da tabela, caso tenha algum registro... tenta repensar melhor no conceito da aplicação como um todo.

    Abraços, espero ter ajudado

    quinta-feira, 22 de março de 2007 14:33

Todas as Respostas

  • Éder, sua consulta na tabela de threads não retornou registro nenhum...

    e ainda assim vc usa rs("titulo_thread")

    o erro ocorre porque ele não encontra o campo titulo_thread porque não existe nenum registro...

    antes dessa linha digita

    <% if not rs.eof then %>

     <td width="19%">&nbsp;<% =rsThreads("TituloThread") %></td>

    <%end if%>

    obs: pela sua lógica só vai exibir a primeira thread da tabela, caso tenha algum registro... tenta repensar melhor no conceito da aplicação como um todo.

    Abraços, espero ter ajudado

    quinta-feira, 22 de março de 2007 14:33
  • Mauro.. muito obrigado.. Funcionou perfeitamente.

    Realmente, um dos fóruns não tinha nenhuma Thread, por isso o erro. Valeu mesmo...

    quinta-feira, 22 de março de 2007 14:48