PUBLICIDADE

Autor

diogobruno

Diogo Bruno de Lima Silvério

membro deste abril de 2007

Compartilhe e guarde

  • Rec6
  • StumbleUpon
  • ueba
  • linkk
  • dihitt
  • linkloko
  • linkto
  • Technorati
  • Simpy
  • del.icio.us
  • Faves: Fave It!

PUBLICIDADE

Enquete

Você acha que sucesso do Twitter é passageiro?

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(diogosilverio@yahoo.com.br)
'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("<tr>")	
			For Each campo in obj.Fields
			%>
				<td><%=campo.value%></td>
			<%
			Next
			Response.Write("</tr>")
			obj.MoveNext
		Wend
	else
		Response.Write("<tr><td>Dados não inicializados ou não há registros para paginação.</td></tr>")		
	end if
end sub
%>

<%
Sub ListarColunas(obj) 'Listando as colunas
	Response.Write("<tr>")
	For each Coluna in obj.Fields
		%>
			<td style="font-weight:bold"><%=Coluna.Name%></td>
		<%
	Next
	Response.Write("</tr>")

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
	%>
		<a href="?pag=<%=(pag+1)%>">Avançar</a>
	<%
	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
	%>
		<a href="?pag=<%=(pag-1)%>">Voltar</a>
	<%
	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
			%>
				<a href=?pag=<%=i%>&qtd=<%=tamanhoPag%>&txt_nome=<%=buscaNome%>><%=i%></a>
			<%
		else
			%>
			<%=i%>
			<%		
		end if
	next
End Sub
%>

ArquivoTipoTamanhoHits 
paginacao.zipArquivo ZIP3,5 Kb787Baixar o Arquivo
Sim   Não   Este código foi útil para você?
NotaComentário
Ainda não foi enviado nenhum comentário.
Regras:
Os comentários seguem as seguintes regras:
  • Todos os comentários são enviados por membros cadastrados no site.
  • A pontuação de comentários de conteúdo do próprio membro não serão computados.
  • Os comentários serão pré-aprovados, porém a equipe do site revisará o conteúdo de todos os comentários podendo ser invalidados (inclusive a pontuação).
  • Os comentários precisam ter, obrigatóriamente, coerência sobre o conteúdo que será comentado.
  • O membro que atingir 5 comentários invalidados não poderá mais comentar dentro do site. Com isso o membro não poderá mais ganhar pontos com comentários.
  • Há um limite de 10 comentários por dia para cada membro.
  • Qualquer comentário após ter sido publicado poderá ser retirado através da opção ( denunciar)

Comente

     (ainda não tem cadastro? clique aqui!)


Máximo de 30 caracteres

Máximo de 255 caracteres
 

R&W Consulting - Soluções Web Hospedagem UOL HOST PagSeguro - solução para pagamentos online
© 2006-2009 R&W Informática Ltda. - Todos os direitos reservados.