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

... Assinatura do site por 1 ano + Kit MontaRibbons + 3 Livros em PDF + Diversas Revistas (pdf) de brinde, por apenas R$100,00
(
podendo parcelar em até 10 vezes no cartão de crédito)...

Clique aqui e obtenha mais detalhes do nosso kit completo e de como comprar.


Como numerar itens em formulários

Antes de iniciar sua leitura, clique aqui e cadastre-se para receber comunicados sobre novos artigos.

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)

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

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

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

Tem como fazer isso num relatorio?

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

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

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!

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   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!

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

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

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

Deus abençoe!

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

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,

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

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

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


Envie seu comentário: