Ir para conteúdo

Arquivado

Este tópico foi arquivado e está fechado para novas respostas.

rodrigofaria

Operação não permitida quando o objeto está fechad

Recommended Posts

Fiz a paginação na minha página principal e está tudo certo. Ok. Mas na página de pesquisa está rolando um problema. Os registros (20) aparecem perfeitamente na primeira página, mas na página seguinte ocorre um erro:

 

ADODB.Recordset error '800a0e78'

Operação não permitida quando o objeto está fechado.

 

/pesquisa.asp, line 1186

 

Bom, a linha que está dando erro no código é o (... IF rsconsultar.eof then ), logo após o SELECT CASE que fiz para rodar o recordset e declarar a instrução SQL.

 

O que eu não entendo é porque em uma página funcionou perfeitamente e na outra, com exatamente o mesmo código, não funciona da 2º página em diante. Só aparecem os primeiro 20 registros!

 

Me parece que o banco ou o recordset estão sendo fechados. Mas não entendi a lógica. Vou postar o código:

 

 

 

 

 

<table width="100%" border="0" cellspacing="0" cellpadding="0" class="ed">

 

 

<%

' Código de conulta para o Canal de Notícias

 

SET RSConsultar = server.CreateObject ("ADODB.RecordSet")

 

'Fazendo a paginação

 

RSConsultar.PageSize = 20

 

 

if Palavra = "" AND Data1 <> "0/0/0" and Data2 <> "0/0/0" then

 

SELECT CASE Assunto

 

Case "1"

 

 

SQL=" SELECT * FROM TblArte A , TblSite S "&_

" WHERE A.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "2"

 

 

SQL=" SELECT * FROM TblCinema C, TblSite S "&_

" WHERE A.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "3"

 

 

SQL=" SELECT * FROM TblEconomia E , TblSite S "&_

" WHERE EC.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "4"

 

 

SQL=" SELECT * FROM TblEducacao ED , TblSite S "&_

" WHERE ED.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "5"

 

 

SQL=" SELECT * FROM TblErotica E , TblSite S "&_

" WHERE ER.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "6"

 

 

SQL=" SELECT * FROM TblEspMotor EM , TblSite S "&_

" WHERE EM.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "7"

 

 

SQL=" SELECT * FROM TblEsoterismo ES , TblSite S "&_

" WHERE ES.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "8"

 

 

SQL=" SELECT * FROM TblEsportes E , TblSite S "&_

" WHERE E.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

 

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "9"

 

 

SQL=" SELECT * FROM TblEspRadicais ER , TblSite S "&_

" WHERE ER.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

Case "10"

 

 

SQL=" SELECT * FROM TblGames G , TblSite S "&_

" WHERE G.Site=S.CodSite AND Data BETWEEN '"&Data1&"' AND '"&Data2&"' ORDER BY ID DESC "

 

RSConsultar.Open SQL,ConBanco,3,3

 

END SELECT

 

 

IF rsconsultar.eof then %><center>

 

Não há registros

 

<%

ELSE

 

IF Request.QueryString("pagina")="" then

intpagina=1

ELSE

IF cint(Request.QueryString("pagina"))<1 then

intpagina=1

ELSE

IF cint(Request.QueryString("pagina"))> RSConsultar.PageCount then

intpagina=RSConsultar.PageCount

ELSE

intpagina=Request.QueryString("pagina")

END IF

END IF

END IF

END IF

 

RSConsultar.AbsolutePage=intpagina

 

cont = 1

 

while cont < RSConsultar.PageSize AND NOT RSConsultar.eof %>

 

 

<!--AQUI VEM OS REGISTROS-->

 

 

<%RSConsultar.movenext

cont = cont + 1

 

IF RSConsultar.EOF then

response.write " "

END IF

 

wend

 

%>

 

</table>

 

<!-- Link que dá a opção pro usuário avançar ou recuar -->

 

 

<table width="100%" border="0" cellspacing="0" cellpadding="0" class="edb">

 

<tr>

 

<td height="30" align="center" bgcolor="#FFFFFF">

 

<% IF intpagina > 1 then %>

 

<a href="pesquisa.asp?pagina=<%=intpagina-1%>" class="linkmenu" onmouseover="this.className='linkmenuon'" onmouseout="this.className='linkmenu'">

 

Anterior</a>

 

<% END IF %>

-

<% IF strcomp(intpagina,RSConsultar.PageCount) <> 0 then

%>

<a href="pesquisa.asp?pagina=<%=intpagina + 1%>" class="linkmenu" onmouseover="this.className='linkmenuon'" onmouseout="this.className='linkmenu'">

 

Próxima </a>

 

<% END IF

SET RSConsultar=NOTHING

%>

 

</td>

</tr>

</table>

 

<!-- fim da Mostra de paginação (próxima/anterior) -->

 

 

 

Não entendo o pq. do erro. Alguém sabe?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Como você está "alimentando" a var Assunto?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Dim ConBanco , RSConsultar , SQL , assunto , palavra , dia , dia2 , mes , mes2 , data1 , data2 , ano , ano2 , intpaginaconst caminho="adlez.mdb"assunto = request.querystring("assunto")html = request.querystring("assunto")palavra = request.QueryString("palavra")dia = request.QueryString("dia")mes = request.QueryString("mes")ano = request.QueryString("ano")dia2 = request.QueryString("dia2")mes2 = request.QueryString("mes2")ano2 = request.QueryString("ano2")data1 = ano&"/"&mes&"/"&diadata2 = ano2&"/"&mes2&"/"&dia2IsDate data1IsDate data2todos vem da página principal...

Compartilhar este post


Link para o post
Compartilhar em outros sites

Coloque ela, e tudo que você precisará em outras páginas da paginação, em uma session, ao invéz de uma variável, pois ela esta se perdendo entre a 1ª e a 2ª páginas, pois ela não está sendo passada para a próxima.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Pq você não quer trabalhar com sessions? Elas são tão legais, não falam mal de ninguém! :)

Na hora de montar seu link para as páginas Ant e Próx acrescente esses dados na querystring.

Compartilhar este post


Link para o post
Compartilhar em outros sites

MARAVILHA!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!Deu certoMuito Obrigado, Salgado.Mas, o seguinte: vou abusar um pouco. Como poderia fazer a mesma coisa com o session?Criaria uma Session para cada variável, tipo: Session ("assunto") = request.querystring("assunto")Daí, o que eu faria? Alguém pode me ajudar a melhorar o código?

Compartilhar este post


Link para o post
Compartilhar em outros sites

Sim você pode fazer desse geito, e ao invéz de utilizar as variáveis você utilizaria as sessions.

Compartilhar este post


Link para o post
Compartilhar em outros sites

Ok. fiz o seguinte:criei uma página que recebe os valores da pesquisa da página principal:Session ("assunto") = request.querystring("assunto")etc, etc, etc.Bom, daí a página é redirecionada para a página de pesquisa aonde eu só trabalho com as sessions, no lugar das variáveis.Quando e onde eu devo usar o Session Abandon ou o SessionTimeOut? No RS.eof? Nunca? Isso pode gerar algum problema? E se o usuário quiser avaçar e retroceder na paginação e eu fechar os Sessions? Vai dar pau?

Compartilhar este post


Link para o post
Compartilhar em outros sites

×

Informação importante

Ao usar o fórum, você concorda com nossos Termos e condições.