Este tópico descreve o procedimento para classificar endereços IP armazenados em um banco de dados Access Internet.

Introdução

Se você trabalhar com endereços IP, provavelmente já sabe que ele não é tão simples quanto trabalhar com texto ou números. Isso porque um endereço IP é realmente uma coleção de quatro valores numéricos separados por um ponto (.), onde cada valor é um número entre 0 e 255. A tabela a seguir mostra os dados antes de qualquer ordem de classificação ser aplicada.

MachineID

Funcionário

Local

IPAddress

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

Classificar 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, você não pode armazenar endereços IP em um campo numérico. Isso se deve ao fato de um campo numérico suportar apenas um único ponto decimal (.), enquanto um endereço IP contém três períodos (.). Isso significa que você deve armazenar os endereços em um campo de texto.

Como você armazena endereços IP em um campo de texto, não é possível usar os botões de classificação integrados no Access para classificar os endereços de forma significativa. Os botões de classificação sempre classificar valores em um campo de texto em ordem alfabética, mesmo que os caracteres sejam números. Em outras palavras, os endereços são organizados pelo primeiro dígito, depois pelo segundo dígito e assim por diante, em vez de pelos valores numéricos que comem o endereço. A tabela a seguir mostra os endereços da tabela anterior classificação em ordem alfabética no campo IPAddress.

MachineID

IPAddress

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 exibidos antes dos endereços que começam com 2 e assim por diante. A tabela a seguir mostra os endereços na ordem crescente correta.

MachineID

IPAddress

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 das etapas envolvidas na classificação desses endereços, você quebra os endereços IP em quatro partes numéricas. Os endereços devem ser organizados pela primeira parte e, em seguida, por cada valor na primeira parte, depois pela segunda parte e assim por diante. A tabela mostra cada parte em uma coluna diferente e, como as colunas têm valores numéricos simples, torna-se possível classificar as colunas da esquerda para a direita em ordem crescente, conforme mostrado na tabela a seguir.

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

Classificar as quatro partes separadamente é o segredo por trás da classificação de endereços IP. No procedimento a seguir, você cria 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 conterá a primeira parte numérica do endereço, a segunda coluna calculada conterá a segunda parte numérica do endereço e assim por diante. Em vez de classificar os registros pelo campo IPAddress, a consulta classificará os registros pelas quatro colunas calculadas.

Criar a consulta

Você criará uma consulta selecionada chamada IPAddresses sorted que exibe os registros em ordem crescente de endereços IP. Suponha que o banco de dados atual tenha uma tabela chamada MachineDetails que inclui um campo de texto chamado IPAddress.

  1. Clique em Criar > Design de Consulta. 

  2. Selecione Adicionar Tabelas (Mostrar TabelaAccess 2013 ) e arraste Detalhes do Computador para a seção superior do Design View.

  3. Arraste os campos MachineID e IPAddress para a grade de design da consulta.

  4. Agora você está pronto para adicionar as colunas calculadas. Na primeira coluna em branco à direita, digite a expressão PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],".") -1))) na linha Field. A expressão retorna os caracteres anteriores ao primeiro período (.) no campo IPAddress.

    Agora, revise a expressão. Como você não sabe quantos dígitos comem a primeira parte do endereço, use a função InStr para encontrar a posição do primeiro período. A subtração 1 (para excluir o período) retorna o número de dígitos na primeira parte. Em seguida, use esse número com a função Left para extrair muitos caracteres, começando do caractere mais à esquerda, do campo IPAddress. Por fim, você chama a função Val para converter os caracteres retornados pela função Left em um número. Esta última etapa é necessária porque o tipo de dados subjacente é Text.

  5. Salve a consulta clicando em Salvar na Barra de Ferramentas de Acesso Rápido. É uma boa ideia fazer isso após cada etapa intermediária.

  6. Adicione a coluna para a segunda parte do endereço. Na coluna à direita de PartI, digite PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") -InStr(1,[IPAddress],".") -1)) na linha Field. A expressão retorna os caracteres localizados entre o primeiro e o segundo períodos no campo IPAddress.

    Novamente, revise a expressão. Como você não sabe quantos dígitos compoem a segunda parte do endereço ou exatamente onde a segunda parte é iniciada (porque você não sabe por quanto tempo a primeira parte é), use a função InStr para encontrar as posições dos períodos. Em seguida, use a função Mid para extrair os caracteres que seguem o primeiro período, mas precedem o segundo período. Por fim, você chama a função Val para converter os caracteres retornados pela função Mid em um número. Esta última etapa é necessária porque o tipo de dados subjacente é Text.

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

    Novamente, revise a expressão. Como você não sabe quantos dígitos compoem a terceira parte do endereço ou exatamente onde a terceira parte é iniciada (porque você não sabe por quanto tempo a primeira e a segunda partes são), use a função InStr para encontrar as posições dos períodos. Em seguida, use a função Mid para extrair os caracteres que seguem o segundo período, mas precedem o terceiro período. Por fim, você chama a função Val para converter os caracteres retornados pela função Mid em um número. Esta última etapa é necessária porque o tipo de dados subjacente é Text.

  8. Adicione a coluna para a quarta e última parte do endereço. Na coluna à direita de PartIII, digite PartIV: Val([IPAddress],Len([IPAddress]))-InStr(InStr(1,[IPAddress],".") +1,[IPAddress],".") +1,[IPAddress],"."))) na linha Field. A expressão retorna os caracteres que seguem o último período.

    Novamente, revise a expressão. A chave é localizar o local do terceiro período e extrair todos os caracteres que o seguem. Como você não sabe exatamente onde o terceiro período está localizado, você chama a função InStr três vezes para encontrar a posição do terceiro período. Em seguida, use a função Len para calcular o número de dígitos na quarta parte. O número de dígitos retornados é usado com a função Right para extrair muitos caracteres da parte direita do campo IPAddress. Por fim, você chama a função Val para converter os caracteres retornados pela função Mid em um número. Esta última etapa é necessária porque o tipo de dados subjacente é Text.

  9. Definir a linha Classificar de todas as quatro colunas calculadas como Ascending.

    Importante    A linha Sort da coluna IPAddress deve ser deixada em branco.

    Se você quiser classificar por outros valores de campo, além dos endereços, coloque os campos à esquerda ou à direita de todas as quatro colunas calculadas. Não coloque os outros campos de classificação entre as colunas calculadas.

  10. A próxima etapa é ocultar as quatro colunas calculadas da folha de dados. Mas antes de fazer isso, alternar para o exibição Folha de Dados para ver o resultado das expressões nas colunas calculadas. A tabela a seguir mostra as colunas que você verá no exibição Folha de Dados.

    MachineID

    IPAddress

    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. Alternar de volta para o exibição Design e desmarcar a caixa de seleção na linha Mostrar de todas as quatro colunas calculadas. Isso impede que as colunas calculadas são exibidas no exibição Folha de Dados.

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

  13. Alternar para o modo folha de dados para ver os registros em ordem classificação. Você verá os registros corretamente organizados em ordem crescente dos endereços IP.

Mais usos para endereços IP organizados

Validar endereços IP durante a entrada de dados

Se você quiser validar endereços sem escrever código, poderá fazer isso em uma extensão limitada definindo a propriedade InputMask do campo como ###.###.####;0;" " e a propriedade Format do campo de endereço IP para &&&&&&&&&&&&.

O que a máscara de entrada faz? Ao começar a digitar no campo de endereço, a máscara de entrada impede que você insere caracteres diferentes de 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 digite um espaço. Observe que essa máscara de entrada não avisa o usuário se ele ignorar a digitação de uma ou mais partes do endereço ou digitar somente espaços em vez de um valor numérico. Por exemplo, "345. .3. " seria aceito como um endereço válido.

O que o formato de exibição faz? Quando você terminar de digitar e sair do campo, o formato de exibição remove os espaços no endereço e exibe apenas os números e períodos. Portanto, se você digitou "354.35 .2 .12", o endereço será exibido como "354.35.2.12". Observe que, se você clicar no endereço ou pressionar F2 (para inserir o modo de edição) quando o endereço estiver selecionado, os espaços reaparecerão.

Dica: Se você quiser copiar um endereço, vá para a coluna ou controle anterior, pressione TAB para selecionar o endereço formatado e clique em Copiar. Ao fazer isso, você não copiará a cadeia de caracteres de endereço que contém espaços.

Classificar registros em um formulário ou relatório por endereços IP

Se você precisar criar um formulário ou um relatório no qual os registros são organizados por endereços IP, basee o novo objeto em uma consulta que classifica endereços conforme descrito anteriormente, em vez de na tabela que armazena os endereços.

Início da Página

Precisa de mais ajuda?

Expanda suas habilidades
Explore o treinamento
Obtenha novos recursos primeiro
Ingressar Microsoft Office Insider

Essas informações foram úteis?

Qual é o seu grau de satisfação com a qualidade do idioma?
O que afetou sua experiência?

Obrigado pelos seus comentários!

×