Jump to content


Photo

Erro Quando Fiz Paginação.


  • Faça o login para participar
6 replies to this topic

#1 ibreak

ibreak

    Turista

  • Usuários
  • 56 posts
  • Sexo:Não informado

Posted 18/03/2006, 14:25

Oi pessoal blz...

Eu estou com um problema de difícil resolução. Eu tenho uma página que exibe o histórico de login de toda vez que o usuário acessou o site. Com o passar do tempo, depois de inúmeros acessos a página vai ficando extendida, por isso eu tentei paginar ela de forma que ficasse mais organizada.

No momento em que fiz isso acabou aparecendo inúmeros erro.

O erro que aparece agora é este:

ADODB.Recordset error '800a0cc1'
Item cannot be found in the collection corresponding to the requested name or ordinal.

/login5/home.asp, line 42


Na linha 42 eu tenho isso:
Response.Write "<p class=FieldLabel>Histórico do usúario: " & rs("FirstName") & " " & rs("LastName") & " (" & rs("UserName") & ")</p>"

Eu já verifiquei o nome dos campos no DB e estão todos certos. Se quiserem verificar por via das dúvidas, neste link vc faz o download do DB.
Download do BD Acesso

Eu não compreendo aonde pode estar o erro que começou no momento em que eu fui tentar paginar os resultados. Vale lembrar que essa página se conecta ao DB dela através de um arquivo global asa que está no meu diretório raiz, também respondendo pelo meu site.

Se ajudar publicarei abaixo a página emq ue exibe o erro e também o código do global.asa.

Obrigado.

Página que tem o erro.

<%@ Language=VBScript %>
<%Response.Expires = 0%>
<%Response.Buffer = true%>
<!--#include file="verify_login.asp"-->
<!--#include file="header.asp"-->

<center>
  
  <%
	user = Session("member") 
	set rs_log = server.CreateObject ("ADODB.Recordset")
	query = "SELECT * FROM User_logTime WHERE offline=True AND user_id=" & user & " ORDER BY id DESC"
	rs_log.Open query, Application("connString"), 3
	if not rs_log.eof then 
  set rs = server.CreateObject ("ADODB.Recordset")
  RS.PageSize = 5
  query = "SELECT * FROM Members WHERE id=" & user
  rs.Open query, Application("connString"), 3, 3
  IF RS.EOF then 
     Response.Write "nenhum registro encontrado"
     Response.End 
     ELSE
  
   IF Request.QueryString("pagina")="" then 
      intpagina=1 
   ELSE
      IF cint(Request.QueryString("pagina"))<1 then
         intpagina=1 
      ELSE
         IF cint(Request.QueryString("pagina"))> RS.PageCount then 
            intpagina=RS.PageCount 
         ELSE
            intpagina=Request.QueryString("pagina")
         END IF
      END IF
   END IF
END IF
        RS.AbsolutePage=intpagina
  intrec=0
  While intrec < RS.PageSize and not RS.EOF    
	
  Response.Write "<p class=FieldLabel>Histórico do usúario: " & rs("FirstName") & " " & rs("LastName") & " (" & rs("UserName") & ")</p>"
  rs.Close
  rs.Open "SELECT DISTINCT user_id FROM User_LogTime WHERE offline=False", Application("connString"), 3
  online = rs.RecordCount 
  Response.Write "<table cellspacing=2 cellpadding=2 width=50% >"
  Response.Write "<tr bgcolor=#333366>"
  Response.Write "<td><font class=colltitle>Sessão N.º:</a></td>"
  Response.Write "<td><font class=colltitle>Data e Hora do Login:</a></td>"
  Response.Write "<td><font class=colltitle>Data e Hora do Logout:</a></td>"
  Response.Write "<td><font class=colltitle>IP:</a></td>"
  Response.Write "</tr>" & vbcrlf
  
  RS.MoveNext
  intrec=intrec+1 
  IF RS.EOF then 
      response.write " " 
   END IF
Wend
rs.Close  
set rs = nothing

IF intpagina > 1 then 
%> 
   <a href="home.asp?pagina=<%=intpagina-1%>">Anterior</a> 
<% 
END IF

IF strcomp(intpagina,RS.PageCount) <> 0 then 
%> 
   <a href="home.asp?pagina=<%=intpagina + 1%>">Próxima</a> 
<% 
END IF
%>
<% 	 
  i = 1
  while not rs_Log.EOF 
 	 if i mod 2 then 
    Response.Write "<tr class=defaultsmall>"
 	 else
    Response.Write "<tr class=defaultsmall bgcolor=#dedede>"
 	 end if
 	 Response.Write "<td>" & rs_Log("SID") & "</td>"
 	 Response.Write "<td>" & rs_Log("Login_Time") & "</td>"
 	 if rs_Log("Logout_Time") <> "" then 
    Response.Write "<td>" & rs_Log("Logout_Time") & "</td>"
 	 else
    Response.Write "<td>N/A</td>"
 	 end if
 	 Response.Write "<td>" & rs_Log("user_ip") & "</td>"
 	 Response.Write "</tr>" & vbcrlf
 	 i = i + 1
 	 rs_Log.MoveNext 
  wend
  Response.Write "</table>"
  
  Response.Write "<p class=defaultsmall>" & online & " usúario(s) online.</p>"    
	else
  Response.Write "<p class=FieldLabel>Este é seu primeiro acesso ao sistema.<br> Você ainda não tem histórico, faça o logout e logue-se novamente.</p>"
	end if
	
	rs_Log.Close 
	set rs_Log = nothing
	
%>
  <a href='logout.asp' class=errmsg>Logout!</a> 
</center>


Arquivo Global.asa
<script language="VBScript" runat="server">

'Inicia as variaveis de aplicação
Sub Application_onStart()
	
	' - - - -Conexao com o banco de dados - -- - -- - -- --- - -  - - --  
	Application("Connection") = "Provider=Microsoft.Jet.OleDb.4.0;Data Source=C:\Domains\noticiaregional.com.br\db\noticias.mdb;"
        Application("connString") = "Provider=Microsoft.Jet.OLEDB.4.0; Data Source=C:\Domains\noticiaregional.com.br\db\acesso.mdb"
End Sub

Sub Session_OnEnd
	set conn = Server.CreateObject ("ADODB.Connection")
	conn.Open Application("connString")
	'	Update the record when the user logout and write the logout time plus it sets the user as OFFLINE.
	query = "UPDATE User_LogTime SET Logout_Time=#" & now() & "#, offline=True WHERE offline=False AND SID=" & Session.SessionID & " AND user_id=" & Session("member")
	conn.Execute (query)
	conn.Close
	set conn = Nothing	
End Sub

Sub Session_onStart()
	Session.Timeout = 20 
	Session.LCID = 1046 
End Sub


</script>


#2 Humberto - S.O.S.

Humberto - S.O.S.

    ...

  • Banidos
  • PipPipPipPipPip
  • 463 posts
  • Sexo:Masculino
  • Localidade:São Bernardo do Campo - SP

Posted 19/03/2006, 00:20

ADODB.Recordset error - O artigo não pode ser encontrado na coleção relativa ao nome. O procedimento mais comum que causa este erro é a tentativa de se trabalhar com um RecordSet que não faz parte da coleção de registros.

http://www.aprendaem.../apcasa15_2.htm
...

#3 Generation

Generation

    Super Veterano

  • Usuários
  • 1546 posts
  • Sexo:Masculino
  • Localidade:Curitiba - PR

Posted 19/03/2006, 10:41

Dei uma olhada no banco e parece estar correto...so nao entendi como voce usa dois RecordSets com o mesmo nome e fecha após ele entrar no Looping, sendo que voce vai utiliza-lo ainda...sugiro que dê outro nome a ele, assim voce nao se perde ;)

[]'s
Favoritos : | OpenSuse | Opera | Firefox | NetBeans | GMail | Leia As Regras | Use a Busca | Como fazer Perguntas Inteligentes |
“Obstáculos são aquelas coisas medonhas que você vê quando tira seus olhos de seu objetivo” (Henry Ford)
“É impossível para um homem aprender aquilo que ele acha que já sabe.” (Epíteto)
“A única razão da existência do tempo é para que todas as coisas não aconteçam de uma vez.”(Albert Einstein)

#4 Humberto - S.O.S.

Humberto - S.O.S.

    ...

  • Banidos
  • PipPipPipPipPip
  • 463 posts
  • Sexo:Masculino
  • Localidade:São Bernardo do Campo - SP

Posted 19/03/2006, 12:07

Entra no link que te recomendei. Lá explica
...

#5 ibreak

ibreak

    Turista

  • Usuários
  • 56 posts
  • Sexo:Não informado

Posted 20/03/2006, 16:08

Humberto eu acessei o link e li o erro. Generation eu não entendi bem o que você me disse para fazer, veja o que disse...

sugiro que dê outro nome a ele (Recordset?), assim voce nao se perde. Como posso fazer isso para resolver o meu problema?

Pode me orientar melhor se possível exemplificar como tem que ficar para funcionar.

Agradeço a resposta. Obrigado Humberto.

#6 ibreak

ibreak

    Turista

  • Usuários
  • 56 posts
  • Sexo:Não informado

Posted 21/03/2006, 13:12

Alguém pode me ajudar?

#7 ibreak

ibreak

    Turista

  • Usuários
  • 56 posts
  • Sexo:Não informado

Posted 22/03/2006, 15:39

Galera ainda não consegui resolver o que estou considerando um dos maiores problemas que já tive. Gostaria de que alguém me ajudasse se souber aonde está o problema. Muito obrigado.




0 user(s) are reading this topic

0 membro(s), 0 visitante(s) e 0 membros anônimo(s)

IPB Skin By Virteq