29/05/2009
Criando uma consulta paginada através de um módulo
por Aldinei Sampaio -
—
posted at
29/05/2009 12:11
Última modificação
29/05/2009 12:11
Segue um exemplo de um módulo que efetua uma pesquisa no banco de dados e gera uma tabela HTML paginada, de forma a exibir 20 registros de cada vez.
Para a montagem da página HTML neste exemplo, utilizamos o módulo 'modHTMLHelper', cujo conteúdo pode ser obtido neste artigo.
<%
/*
=====================================
modExemploPaginacao
---
Efetua uma pesquisa e exibe os dados em uma tabela HTML paginada
---
Kankei Software e Consultoria Ltda - Todos os direitos reservados
Aldinei Sampaio - 29/mai/2009
=====================================
*/
// Define a quantidade de registros a listar por página
var pageSize = 20;
// Calcula a quantidade de páginas
Parameters('pageCount') = Math.ceil(GetCount() / pageSize);
// Verifica qual botão o usuário pressionou
var currentPage;
if (Parameters('next')) {
// Botão 'Próxima'
currentPage = ToLong(Parameters('currentPage'));
currentPage++;
} else if (Parameters('previous')) {
// Botão 'Anterior'
currentPage = ToLong(Parameters('currentPage'));
currentPage--;
} else if (Parameters('first')) {
// Botão 'Primeira'
currentPage = 1;
} else if (Parameters('last')) {
// Botão 'Última'
currentPage = Parameters('pageCount');
} else {
// Nenhum botão pressionado (deve ser a primeira execução do módulo)
currentPage = 1;
}
// Checa se a página é válida
if (currentPage > Parameters('pageCount')) {
currentPage = Parameters('pageCount');
} else if (currentPage < 1) {
currentPage = 1;
}
Parameters('currentPage') = currentPage;
// Obtém a lista de registros, caso exista algum
var rs;
if (Parameters('pageCount') > 0) {
rs = GetList();
}
// Pesquisa para obter a lista de registros
function GetList() {
var p = K.BD.NovaPesquisa();
// Incluir aqui filtros para a pesquisa (as pesquisas de
// GetList() e GetCount() devem ter os mesmos filtros)
p.Listar('NomeFantasia');
p.OrdenarPor('NomeFantasia');
// As duas linhas abaixo são responsáveis por limitar
// o número de registros da pesquisa
p.ExecuçãoOpções.PageNumber = Parameters('currentPage');
p.ExecuçãoOpções.PageSize = pageSize;
return p.Executar();
}
// Pesquisa para obter a quantidade total de registros
function GetCount() {
var p = K.BD.NovaPesquisa();
// Incluir aqui filtros para a pesquisa (as pesquisas de
// GetList() e GetCount() devem ter os mesmos filtros)
p.Listar().Contagem();
return p.Executar().Contagem();
}
%>
<% if (rs) { /* Registros foram encontrados */ %>
<% eval(K.BD.GetScriptObject('modHTMLHelper').Text); %>
<html>
<body>
<%=html.OpenForm()%>
<table>
<% while (!rs.EOF) { /* Percorre os registros */ %>
<tr>
<td>
<%=rs.Ler().Texto('NomeFantasia')%>
</td>
</tr>
<% rs.MoveNext(); } %>
</table>
<div>
<%=html.Button('first',
'<< Primeira',
Parameters('currentPage') > 1 ? {} : {disabled:'disabled'} )%>
<%=html.Button('previous',
'< Anterior',
Parameters('currentPage') > 1 ? {} : {disabled:'disabled'} )%>
Página: <%=Parameters('currentPage')%> / <%=Parameters('pageCount')%>
<%=html.Button('next',
'Próxima >',
Parameters('currentPage') < Parameters('pageCount') ? {} : {disabled:'disabled'} )%>
<%=html.Button('last',
'Última >>',
Parameters('currentPage') < Parameters('pageCount') ? {} : {disabled:'disabled'} )%>
<%=html.HiddenField('currentPage')%>
</div>
<%=html.CloseForm()%>
</body>
</html>
<% } else { /* Nenhum registro encontrado */ %>
<% eval(K.BD.GetScriptObject('modHTMLHelper').Text); %>
<html>
<body>
<%=html.OpenForm()%>
<div>
Nenhum registro encontrado
</div>
<div>
<%=html.Button('Tentar Novamente')%>
</div>
<%=html.CloseForm()%>
</body>
</html>
<% } %>
Segue abaixo imagem com o resultado da execução deste módulo:
- Category(s)
-
KANKEI