Categorias

Solução de páginação para diversos banco de dados

Este é um script que criei com base em outros feitos em pequenas páginas por mim.

Este script possui Sub’s de Navegação, Listagem, Paginação númerica, auto reconhecimento e geração dos nomes das colunas e exibição da página atual e total de páginas.

É de fácil adaptação, podendo ser aplicados seus próprios estilos e métodos de formatação. E por se tratar de estar totalmente modularizado, a disposição da paginação, paginação númeria ou listagem, fica à total disposição do desenvolvedor.

Baixe o arquivo em anexo para pegar a versão completa do código

<%
'Desenvolvido por Diogo Silvério([email protected])
'Fez alguma Alteração? Poste aqui sem tirar os créditos anteriores.
'A alteração ficou legal?? Manda pra mim o link
'~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~------
'Os estilos podem facilmente serem alterados, tanto in quanto out-line
'Cuidado especial com essas variáveis globais, se alterar alguma
'lembre-se de alterar também na página onde é feita a inclusão desse .Asp
'-------------------------------------------------------------------------
'Ah sim, é lógico que é livre pra ser usado em qualquer site, inclusive 
'para seus clientes, tio, papagaio e etc, mas não vendido ou ser parte
'daqueles CD's ou coleções fuleiras vendidos em CD em banca de jornal!
'
'No mais, bom uso, e reportem qualquer coisa!
'[]'s a todos

Dim objCon, objRs
Dim contador
Dim tamanhoPag, pagAtual
Dim buscaNome ' Aqui você adiciona seus novos campos de busca
Dim buscaNomeOk ' E também adicione uma variavel com o mesmo nome finalizando com Ok, logo mais vera o porque
Dim queryDados, queryDadosExtra, buscaInterna

Set objCon = Server.CreateObject("Adodb.Connection") 'Criação do Obj de Conexão
Set objRs = Server.CreateObject("Adodb.RecordSet") 'Criação do RecorSet
%>

<%
Sub CarregarRs(driver)' Aqui é Carregado o seu RS e SGBD
	'-----------------------------------------------------------
	buscaExtra = "" 'É vazio, mas será preenchido caso algum campo de busca exista!
	queryDados = "Select * from Clientes" 'Query Básica, atente-se ao controle abaixo, explicado posteriormente
	queryDadosExtra = false 'Valor inicial é falso mesmo
	'-----------------------------------------------------------
	
	tamanhoPag = Cint(Request("qtd")) 'Tanto QueryString quanto Form
	pagAtual = Cint(Request("pag"))   'Idem
	buscaNome = Request("txt_nome") ' Adicione outras campos de busca que desejar, lembrando da oura variavel com ok no fim
	
	if((pagAtual <=0) or (pagAtual = "")) then pagAtual = 1 'Por questão de bom senso, caso não haja numero ou a página tenha número negativo(Lammer FDP, quase buga sua paginação uashusa) o valor é configurado como 1
	if((tamanhoPag <=0) or (tamanhoPag = "")) then tamanhoPag = 10 ' O mesmo que de cima
	
	'------------------------------------------
	'Aqui está algo que não achei muito comum.
	'Nesse ponto, as variaveis de busca que possuirem algum valor
	'terão suas variaveis OK configuradas como true
	'
	if(buscaNome <> "") then buscaNomeOk = true 'Se houver caracteres em BuscaNome, BuscaNomeOk é VERDADEIRO
	
	if((buscaNomeOk)) then 'SE BuscaNomeOk É VERDADEIRO, queryDadosExtra também será. Aqui, adicione seguidas condicionais para verificar todos os campos de busca, e fazer o mesmo com o queryDadosExtra
		queryDadosExtra = True
	end if	
	'------------------------------------------
	if(queryDadosExtra) then 'Se QueryDadosExtra é verdadeiro
		if(buscaNomeOk) then 'E busca também o é
			buscaInterna = buscaInterna & " nome like '%" & buscaNome & "%'" ' Então, adicione à buscaInterna estes parametros. LEMBRE-SE do espaço no ínicio de cada campo verdadeiro
		end if
		queryDados = queryDados & " where" & buscaInterna 'Logo, se querDadosExtra e buscaNome é verdadeiro	e BuscaInterna foi preenchida, à queryDados é concatenada com o valor da buscaInterna.
	end if
	'Já se foi o mais chato, agora é configuração de RecordSet apenas(outra parte que pode ser muita chata se houverem incorreções no queryBusca! fique atento ;])
	'------------------------------------------
	
	objCon.open driver ' Abre o driver especificado

	objRs.ActiveConnection = objCon ' Abre sua conexão com o BD
	objRs.CursorLocation = 3 ' adUseClient, use 2(adUseServer) caso queira que o cursos fique no Server
	objRs.CursorType = 2 'adUseDinamic ou 1 para adUseStatic
	objRs.PageSize = tamanhoPag 'Tamanho de cada pagina paginada(huashuasuh)
	objRs.open queryDados ' Sua Consulta está sendo aberta! :O
	contador = objRs.PageCount ' Aqui é recebido o total de páginas calculada pelo seu BD, essa variável servirá para controle posterior
	
	if(pagAtual > contador)	then pagAtual = contador 'A página atual nunca poderá ser maior que o total de páginas existentes
	
	objRs.AbsolutePage = pagAtual ' Muda o recordSet para a página atual
end Sub
%>

<%
sub Listar(obj, pag)'Aqui são(ou é?) listado seus registros
'Modificações devem ser feitas(preferencialmente) no html.
'Tá tá, eu sei que usat tabela é feio, mas fiz isso em 25 minutos
'e nem me liguei que poderia ter usado listas =PpP
	if Not((obj.Eof) or (obj.Eof)) then
		While(Not(obj.Eof) and(obj.AbsolutePage = pag))		
			Response.Write("")	
			For Each campo in obj.Fields
			%>
				<%=campo.value%>
			<%
			Next
			Response.Write("")
			obj.MoveNext
		Wend
	else
		Response.Write("Dados não inicializados ou não há registros para paginação.")		
	end if
end sub
%>

<%
Sub ListarColunas(obj) 'Listando as colunas
	Response.Write("")
	For each Coluna in obj.Fields
		%>
			<%=Coluna.Name%>
		<%
	Next
	Response.Write("")

end sub
%>

<%
sub Avancar(pag, cont)'Avançando nas páginas
'Se a pagina atual é menor que o total de páginas, link avançar ativado, senão, desativado
	if(pag < cont) then
	%>
		Avançar
	<%
	else
	%>
		Avançar
	<%
	end if	
end sub

sub Voltar(pag, cont)'Retrocedendo nas páginas
'Parecido com o de Avançar, as o contrário =p
	if(pag > 1) then
	%>
		Voltar
	<%
	else
	%>
		Voltar
	<%
	end if	
end sub
%>
<%
sub PaginaAtual(pag, obj)'Aqui é exibida a página atual e o total de páginas
%>
	Página <%=pag%>/<%=obj.PageCount%>
<%	
end sub
%>
<%
Sub ListaNumerada(pag, obj)'Gera a lista númerada das páginas, desativando apenas a página atual
	For i = 1 to obj.PageCount
		if(i <> pag) then
			%>
				&qtd=<%=tamanhoPag%>&txt_nome=<%=buscaNome%>><%=i%>
			<%
		else
			%>
			<%=i%>
			<%		
		end if
	next
End Sub
%>

Arquivos para Download:

paginacao.zip