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

Nota importante: para ter acesso aos vídeos e arquivos exemplos deste site, adquira um dos planos apresentados abaixo. Você pode comprar em até 5x no Cartão de Crédito. 

Veja como comprar e saiba mais sobre o material oferecido,  clicando aqui.

Open v3

 

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!


 

 


13 comentário(s)

luciano ricardo rocha de souza   12/08/2023 13:20:17

infelizmente não funcionou no meu subformulário.
O problema talvez seja na localização da função.
Onde devo coloca-la?

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

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

Walter   02/09/2022 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

Avelino Sampaio   27/02/2022 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/2022 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,

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

Tem como fazer isso num relatorio?

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

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

Avelino Sampaio   15/05/2021 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/2021 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?

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

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

Deus abençoe!

Avelino Sampaio   05/03/2021 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/2021 20:18:15

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

Amilton   08/01/2021 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


Envie seu comentário: