Applies ToAccess para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Este tópico descreve o procedimento para ordenar endereços IP (Internet Protocol) armazenados numa base de dados Access.

Introdução

Se trabalhar com endereços IP, provavelmente já sabe que não é tão simples como trabalhar com texto ou números. Isto acontece porque um endereço IP é, na verdade, uma coleção de quatro valores numéricos separados por um ponto final (.), em que cada valor é um número entre 0 e 255. A tabela seguinte mostra os dados antes de ser aplicada qualquer sequência de ordenação.

MachineID

Funcionário

Localização

Endereço IP

1

...

...

123.4.245.23

2

...

...

104.244.253.29

3

...

...

1.198.3.93

4

...

...

32.183.93.40

5

...

...

104.30.244.2

6

...

...

104.244.4.1

Ordenar endereços IP no Access é um desafio porque o Access não fornece um tipo de dados especial para armazenar endereços IP. Embora um endereço IP seja apenas uma coleção de números, não pode armazenar endereços IP num campo numérico. Isto deve-se ao facto de um campo numérico suportar apenas uma única vírgula decimal (.), enquanto que um endereço IP contém três pontos (.). Isto significa que tem de armazenar os endereços num campo de texto.

Uma vez que armazena endereços IP num campo de texto, não pode utilizar os botões de ordenação incorporados no Access para ordenar os endereços de forma significativa. Os botões de ordenação ordenam sempre os valores num campo de texto por ordem alfabética, mesmo que os carateres sejam números. Por outras palavras, os endereços são ordenados pelo primeiro dígito, depois pelo segundo dígito e assim sucessivamente, em vez dos valores numéricos que compõem o endereço. A tabela seguinte mostra os endereços da tabela anterior ordenados por ordem alfabética no campo Endereço IP.

MachineID

Endereço IP

3

1.198.3.93

2

104.244.253.29

6

104.244.4.1

5

104.30.244.2

1

123.4.245.23

4

32.183.93.40

Os endereços que começam com 1 são apresentados antes dos endereços que começam com 2, etc. A tabela seguinte mostra os endereços pela ordem ascendente correta .

MachineID

Endereço IP

3

1.198.3.93

4

32.183.93.40

5

104.30.244.2

6

104.244.4.1

2

104.244.253.29

1

123.4.245.23

Para facilitar a compreensão dos passos envolvidos na ordenação destes endereços, divida os endereços IP em quatro partes numéricas. Os endereços têm de ser ordenados pela primeira parte e, em seguida, por cada valor na primeira parte, depois pela segunda parte, etc. A tabela mostra cada parte numa coluna diferente e, uma vez que as colunas contêm valores numéricos simples, torna-se possível ordenar as colunas da esquerda para a direita por ordem ascendente, conforme mostrado na tabela seguinte.

PartI

PartII

PartIII

PartIV

1

198

3

93

32

183

93

40

104

30

244

2

104

244

4

1

104

244

253

29

123

4

245

23

Ordenar as quatro partes separadamente é o truque subjacente à ordenação de endereços IP. No procedimento seguinte, vai criar uma consulta que, além do campo endereço IP, inclui quatro colunas calculadas onde cada coluna armazena uma parte dos valores de endereço. A primeira coluna calculada irá conter a primeira parte numérica do endereço, a segunda coluna calculada irá conter a segunda parte numérica do endereço e assim sucessivamente. Em vez de ordenar os registos pelo campo IPAddress, a consulta irá ordenar os registos pelas quatro colunas calculadas.

Criar a consulta

Irá criar uma consulta selecionar denominada Endereços IP Ordenados que apresenta os registos por ordem ascendente de endereços IP. Suponha que a base de dados atual tem uma tabela com o nome MachineDetails que inclui um campo de texto com o nome IPAddress.

  1. Clique em Criar > Estrutura da Consulta

  2. Selecione Adicionar Tabelas (Mostrar Tabela no Access) e arraste Detalhes da Máquina para a secção superior da Vista estrutura.

  3. Arraste os campos MachineID e IPAddress para a grelha de estrutura da consulta.

  4. Está agora pronto para adicionar as colunas calculadas. Na primeira coluna em branco à direita, escreva a expressão PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) na linha Campo . A expressão devolve os carateres anteriores ao primeiro período (.) no campo IPAddress.

    Agora, reveja a expressão. Uma vez que não sabe quantos dígitos compõem a primeira parte do endereço, utiliza a função InStr para encontrar a posição do primeiro período. Subtrair 1 (para excluir o período) devolve o número de dígitos na primeira parte. Em seguida, utilize este número com a função Esquerda para extrair tantos carateres, a partir do caráter mais à esquerda, do campo IPAddress. Por fim, chama a função Val para converter os carateres devolvidos pela função Esquerda num número. Este último passo é necessário porque o tipo de dados subjacente é Texto.

  5. Guarde a consulta ao clicar em Guardar na Barra de Ferramentas de Acesso Rápido. É uma boa ideia fazê-lo depois de cada passo intermédio.

  6. Adicione a coluna para a segunda parte do endereço. Na coluna à direita de PartI, escreva PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[ENDEREÇO IP],".") -InStr(1,[IPAddress],".") -1)) na linha Campo . A expressão devolve os carateres que estão localizados entre o primeiro e o segundo períodos no campo IPAddress.

    Novamente, reveja a expressão. Uma vez que não sabe quantos dígitos compõem a segunda parte do endereço ou exatamente onde começa a segunda parte (porque não demora quanto tempo é a primeira parte), utilize a função InStr para encontrar as posições dos períodos. Em seguida, utilize a função Média para extrair os carateres que se seguem ao primeiro período, mas preceder o segundo período. Por fim, chama a função Val para converter os carateres devolvidos pela função Média num número. Este último passo é necessário porque o tipo de dados subjacente é Texto.

  7. Adicione a coluna para a terceira parte do endereço. Na coluna à direita de PartII, escreva PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],".") +1,[ENDEREÇO IP],".") +1,InStr(InStr(InStr(1,[IPAddress],".") +1,[ENDEREÇO IP],".") +1,[ENDEREÇO IP],".") -InStr(InStr(1,[IPAddress],".") +1,[ENDEREÇO IP],".") -1)) na linha Campo . A expressão devolve os carateres localizados entre o segundo e o terceiro períodos no campo IPAddress.

    Novamente, reveja a expressão. Uma vez que não sabe quantos dígitos compõem a terceira parte do endereço ou exatamente onde começa a terceira parte (porque não sabe quanto tempo são as primeiras e segundas partes), utilize a função InStr para encontrar as posições dos períodos. Em seguida, utilize a função Média para extrair os carateres que se seguem ao segundo período, mas precedem o terceiro período. Por fim, chama a função Val para converter os carateres devolvidos pela função Média num número. Este último passo é necessário porque o tipo de dados subjacente é Texto.

  8. Adicione a coluna para a quarta e última parte do endereço. Na coluna à direita de PartIII, escreva PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],".") +1,[ENDEREÇO IP],".") +1,[IPAddress],"."))) na linha Campo . A expressão devolve os carateres que se seguem ao último período.

    Novamente, reveja a expressão. A chave é localizar a localização do terceiro período e, em seguida, extrair todos os carateres que se seguem. Uma vez que não sabe exatamente onde está localizado o terceiro período, chama a função InStr três vezes para encontrar a posição do terceiro período. Em seguida, utilize a função Len para calcular o número de dígitos na quarta parte. O número de dígitos devolvidos é então utilizado com a função Direita para extrair tantos carateres da parte direita do campo ENDEREÇO IP. Por fim, chama a função Val para converter os carateres devolvidos pela função Média num número. Este último passo é necessário porque o tipo de dados subjacente é Texto.

  9. Defina a linha Ordenar das quatro colunas calculadas como Ascendente.

    Importante    A linha Ordenar da coluna IPAddress tem de ser deixada em branco.

    Se quiser ordenar por outros valores de campo, para além dos endereços, coloque os campos à esquerda ou à direita das quatro colunas calculadas. Não coloque os outros campos de ordenação entre as colunas calculadas.

  10. O passo seguinte é ocultar as quatro colunas calculadas da folha de dados. No entanto, antes de o fazer, mude para a vista Folha de Dados para ver o resultado das expressões nas colunas calculadas. A tabela seguinte mostra as colunas que verá na vista Folha de Dados.

    MachineID

    Endereço IP

    PartI

    PartII

    PartIII

    PartIV

    3

    1.198.3.93

    1

    198

    3

    93

    4

    32.183.93.40

    32

    183

    93

    40

    5

    104.30.244.2

    104

    30

    244

    2

    6

    104.244.4.1

    104

    244

    4

    1

    2

    104.244.253.29

    104

    244

    253

    29

    1

    123.4.245.23

    123

    4

    245

    23

  11. Regresse à vista Estrutura e desmarque a caixa de verificação na linha Mostrar das quatro colunas calculadas. Isto impede que as colunas calculadas sejam apresentadas na vista Folha de Dados.

  12. Opcionalmente, especifique critérios para excluir registos da consulta.

  13. Mude para a vista Folha de Dados para ver os registos por ordem ordenada. Verá os registos corretamente ordenados por ordem ascendente dos endereços IP.

Mais utilizações para endereços IP ordenados

Validar endereços IP durante a introdução de dados

Se quiser validar endereços sem escrever código, pode fazê-lo de forma limitada ao definir a propriedade InputMask do campo como ###.##.##.# 0;" " e a propriedade Formatar do campo endereço IP para &&&&&&&&&&&&.

O que faz a máscara de introdução? Quando começa a escrever no campo de endereço, a máscara de introdução impede-o de introduzir carateres que não sejam números e espaços entre os três períodos. Se uma parte numérica for um número de dois dígitos, deixe o terceiro dígito em branco ou escreva um espaço. Tenha em atenção que esta máscara de introdução não avisa o utilizador se ignorar escrever uma ou mais partes do endereço ou escrever apenas espaços em vez de um valor numérico. Por exemplo, "345. .3. " seria aceite como um endereço válido.

O que faz o formato de apresentação? Quando terminar de escrever e sair do campo, o formato de apresentação remove os espaços no endereço e apresenta apenas os números e períodos. Assim, se tiver escrito "354.35 .2 .12", o endereço será apresentado como "354.35.2.12". Tenha em atenção que se clicar no endereço ou premir F2 (para entrar no modo de edição) quando o endereço estiver selecionado, os espaços voltarão a aparecer.

Sugestão: Se quiser copiar um endereço, aceda à coluna ou controlo anterior, prima a Tecla de Tabulação para selecionar o endereço formatado e, em seguida, clique em Copiar. Ao fazê-lo, não copiará a cadeia de endereços que contém espaços.

Ordenar registos num formulário ou relatório por endereços IP

Se precisar de criar um formulário ou um relatório no qual os registos são ordenados por endereços IP, basee o novo objeto numa consulta que ordena os endereços conforme descrito anteriormente, em vez de na tabela que armazena os endereços.

Início da Página

Precisa de mais ajuda?

Quer mais opções?

Explore os benefícios da subscrição, navegue em cursos de formação, saiba como proteger o seu dispositivo e muito mais.

As comunidades ajudam-no a colocar e a responder perguntas, a dar feedback e a ouvir especialistas com conhecimentos abrangentes.