bollywood actresses hair loss hair rehab london contact number cheap hair extensions brazilian curly hair with closure hair extension fails human hair wigs black ponytail hairstyles 2018 sunny hair extensions uk hair extensions remy hair extensions weft koko one piece hair extensions clip hair
Como numerar Itens em formulários

Como numerar itens em formulários

Adquira a assinatura vitalícia do site e passe a ter acesso aos arquivos exemplos, vídeos, revistas, livros e ao kit de montagem de ribbons. Você terá suporte por e-mail, caso necessite tirar dúvidas pontuais. Clique AQUI e veja como obter um dos nossos planos. Clique AQUI e faça uma visita a seção Downloads do site e verifique as centenas de arquivos que estará à sua disposição. Clique AQUI e faça uma visita a seção Vídeos do site e veja a lista que estará disponível ao se tornar o nosso assinante vitalício. Clique AQUI e saiba mais detalhes sobre o kit de montagem de ribbons (deixe seus aplicativos com aspecto profissional).



Modelo de consulta prejudicial ao desempenho

Vejo muitos colegas programadores aplicarem a técnica de numerar os itens pela consulta, para então, ser aplicado ao formulário, o que traz um prejuízo enorme ao desempenho do aplicativo quando este é utilizado em um ambiente de rede.   A razão de contribuir para baixar o desempenho do aplicativo é que a consulta é obrigada a realizar várias viagens à tabela para obter a contagem. 

Veja abaixo, um exemplo deste tipo de consulta:

SELECT (SELECT COUNT(*)+1 FROM SuaTabela x 
WHERE x.SeuCampo < y.SeuCampo) AS Numeracao, y.*
FROM SuaTabela AS y;

Portanto, não use este tipo de consulta, em hipótese alguma!  

Utilizando os registros já presentes no formulário

A técnica consiste em Clonar os registros já presentes no formulário e então realizar a contagem.  Assim evitamos excursões desnecessárias à tabela do back-end, contribuindo para um melhor desempenho do aplicativo.

Observe abaixo o código utilizado para um formulário:

Public Function fncNumerar(frm As Form) As Long
On Error GoTo TrataErro    
With frm.RecordsetClone        
   .Bookmark = frm.Bookmark        
   fncNumerar = 1 + .AbsolutePosition    
End With   
Exit Function
TrataErro:    
   If Err = 3021 Then fncNumerar = 0
End Function

Veja na imagem abaixo, os itens sendo numerados:

Usando Access - Numerar Itens formulário

 

A função é aplicada diretamente na propriedade do campo que irá receber a numeração.  Observe na imagem abaixo:

Usando Access - Propriedade Origem do Controle

 

Mais vantagens

Outras duas grandiosas vantagens no uso deste código é a possibilidade de se  utilizar a ordenação e as filtragens nativas do Access.

Ao baixar o exemplo, altere a ordenação e realize filtragens para você poder observar o resultado da numeração.

Usando Access - Ordenação e filtragens

 

Funciona em Sub Formulários

Funciona muito bem em sub formulários. Veja na imagem abaixo:

Usando Access - Numerar itens em sub formulário

 

Como numerar em relatórios

A técnica é diferente e bem mais fácil de ser implementada.  Veja aqui neste meu tutorial!

Baixar o arquivo exemplo

Sucesso!


 

 


12 comentário(s)

Fausto Cormack   12/09/2017 18:00:55

Código simples e eficiente!
Parabéns e obrigado por compartilhar.

Avelino Sampaio   27/02/2016 07:44:27

Paulo,

para numerar em relatório é bem mais simples. Vá no meu tutorial "Somar, contar e numerar em relatórios" e veja como se faz.

Aproveite e se inscreva no meu fórum e poste lá também suas dúvidas:

http://www.redeaccess.com.br

Paulo de Tarso.   26/02/2016 21:13:58

Grande Avelino....

Saudações...

Para o código abaixo funcionar em relatório onde tenho que alterar no código ?

Option Compare Database
Dim op$
Dim k%

Public Function fncNumerar(frm As Form) As Long
On Error GoTo TrataErro
With frm.RecordsetClone
.Bookmark = frm.Bookmark
If op <> .Operadora Then
op = .Operadora
k = .AbsolutePosition
End If
fncNumerar = 1 + .AbsolutePosition - k
End With
Exit Function
TrataErro:
If Err = 3021 Then fncNumerar = 0
End Function

Desde já agradeço,

Walter   02/09/2015 10:19:24

Olá, gostaria de saber porque essa função não funciona no meu subform mesmo eu tendo feito exatamente como instruiu. Vou deixar aqui o link do meu form https://mega.nz/#!IYhyTLCb!q6oI6dqvDfJq0AgFQYDB6ScS9D7h-CaMq3L-f9naAjY

Diogo Susewind   11/05/2014 11:20:48

Muito obrigado, sempre eficiente e objetivo
me ajudou mais uma vez
Parabéns!

Deus abençoe!

Amilton   08/01/2014 19:16:00

Boa Tarde Avelino , bom ano para voçê e todos que utilizam este excelente site
Gostaria de saber como faço para excluir 1 item do subform que esta usando a função numerar?
Att
Amilton

Avelino Sampaio   15/05/2013 10:45:55

Ramon,

com base na função do exemplo, veja se atende:

Option Compare Database
Dim op$
Dim k%

Public Function fncNumerar(frm As Form) As Long
On Error GoTo TrataErro
With frm.RecordsetClone
.Bookmark = frm.Bookmark
If op <> .Operadora Then
op = .Operadora
k = .AbsolutePosition
End If
fncNumerar = 1 + .AbsolutePosition - k
End With
Exit Function
TrataErro:
If Err = 3021 Then fncNumerar = 0
End Function

Sucesso!

Ramon   14/05/2013 09:56:41

Avelino, bom dia.

Seria possivel com esse recurso fazer um contador, por exemplo.

No grupo de registro do Ademir abreu, na coluna informar:
TIM = 01
Claro = 01
Claro = 02
GVT = 1
VIVO = 1
NEXTEL = 1
NEXTEL = 2

Não sei se fui claro......mas para cada operadora novamente zerar e ir incrementando.....é possivel?

Avelino Sampaio   05/03/2013 07:32:24

Jefferson,

copie e cole o link abaixo no seu navegador.

http://maximoaccess.maisforum.com/t11275-resolvidonumerar-caixa-de-listagem-nao-acoplada

No exemplo que forneço, mostro uma técnica para armazenar a numeração na tabela.

Sucesso!

Jefferson Almeida   04/03/2013 20:18:15

Como faço para passar essa numeração direto para a tabela?

Eduardo Rubio   04/12/2012 13:30:26

Tem como fazer isso num relatorio?

Eduardo Rubio   04/12/2012 13:26:59

Muito bom esse exemplo.... parabens....e obrigdo por compartilhar conosco... sucesso !!!


Envie seu comentário: