Paginação com filtro
Salve galera...tenho uma página onde o usuário preenche um campo(empresa) e a partir desse campo são exibidos os resultados encontrados, por serem vários resultados tive que fazer uma paginação e para isso utilizei o código abaixo(que a maioria de vcs já deve ter visto pela net) mas...a paginação só funciona corretamente na primeira página, onde a consulta sql funciona normal (select * from cadastro where... fiz o teste dando um response.write) mas qdo eu aperto no próximo, ele perde o filtro e o sql passa a ser (select * from cadastro).
No começo da página de paginação eu tenho uma verificação que pega o valor do campo "empresa" da página anterior e a partir dai faz a pesquisa no banco...caso esse campo não tenha sido preenchido ai eu mando ele executar o select*from cadastro...
acredito que o problema esteja nessa parte...pois quando ele muda para a página 2 ele perde o request.form...tentei colocar o comando sql em querystring a cada página que ele muda eu puxo o sql completo e mando executar...mas não deu certo...queria saber se esse é realmente o caminho, ou se tem alguma forma mais fácil de fazer isso...
Se precisar posto o códico completo...só não postei pq ta gigante e bem bagunçado(css, etc)
Por enquanto é isso...
Espero que possam me ajudar!
:D
<%
'Efetuando a conexão com a base de dados criada -----------------------
Set Conn = Server.CreateObject("AdoDb.Connection")
Conn.provider="Microsoft.Jet.OLEDB.4.0"
Conn.connectionstring=Server.Mappath("/coluna_asp/db /clientes.mdb")
Conn.open
'--------------------------------------------------------------------------
'Vamos criar o objeto Record Set -> neste caso é necessário declará-lo,
'pois vamos utilizar algumas funções deste objeto
Set RS = Server.CreateObject("adodb.recordset")
RS.PageSize = 5 'quantidade de registros por página. Você pode alterar sem conforme precise.
'Vamos fazer a busca na tabela contatos
SQL = "select * from contatos"
RS.Open SQL,Conn,3,3
'Vamos agora verificar exceções do tipo “fim de arquivo” (EOF), se a página atual é menor
'que zero, se é maior que o número total de páginas, etc.
IF RS.EOF then
Response.Write "nenhum registro encontrado"
Response.End 'paramos o programa
ELSE
'Definindo em qual pagina o visitante está
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
'Fim das verificações de exceções
'Usamos a propriedade AbsolutePage para dizer ao RS que página ele esta
RS.AbsolutePage=intpagina
' Inicia o contador que vai controlar os registros mostrados
intrec=0
'Enquanto o contador for menor que a quantidade de registros mostrados ou
' não for o final do arquivo
While intrec < RS.PageSize and not RS.EOF
'------------------- AQUI VEM TUDO O QUE SEÁ PAGINADO -----------------------
response.write RS("nome") & " - " & RS("telefone") & " - " & RS("email") & "<BR>"
'---------------------------------------------------------------------------------------------
RS.MoveNext
' Acrescenta +1 ao contador
intrec=intrec+1
'Se for EOF (fim de arquivo), imprimir branco na tela
IF RS.EOF then
response.write " "
END IF
Wend 'fim do loop
'Vamos verificar se não é a página 1, para podermos colocar o link “anterior”.
IF intpagina > 1 then
%>
<a href="paginacao.asp?pagina=<%=intpagina-1%>">Anterior</a>
<%
END IF
'Se não estivermos no último registro contado, então é mostrado o link p/ a próxima página
IF strcomp(intpagina,RS.PageCount) <> 0 then
%>
<a href="paginacao.asp?pagina=<%=intpagina + 1%>">Próxima</a>
<%
END IF
%>
Discussão (3)
Carregando comentários...