Ordenar direcciones IP en Access

En este tema se describe el procedimiento para ordenar las direcciones de protocolo de Internet (IP) almacenadas en una base Access datos.

Introducción

Si trabaja con direcciones IP, probablemente ya sepa que no es tan sencillo como trabajar con texto o números. Esto se debe a que una dirección IP es realmente una colección de cuatro valores numéricos separados por un punto (.), donde cada valor es un número entre 0 y 255. En la tabla siguiente se muestran los datos antes de aplicar cualquier criterio de ordenación.

Id. de máquina

Empleado

Ubicación

DIRECCIÓN 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 direcciones IP en Access es un reto porque Access no proporciona un tipo de datos especial para almacenar direcciones IP. Aunque una dirección IP es solo una colección de números, no puede almacenar una dirección IP en un campo numérico. Esto se debe a que un campo numérico solo admite una única coma decimal (.), mientras que una dirección IP contiene tres puntos (.). Esto significa que debe almacenar las direcciones en un campo de texto.

Dado que almacena direcciones IP en un campo de texto, no puede usar los botones de ordenación integrados en Access para ordenar las direcciones de forma significativa. Los botones de ordenación siempre ordenan los valores de un campo de texto en orden alfabético, incluso si los caracteres son números. En otras palabras, las direcciones se ordenan por el primer dígito, después por el segundo dígito, y así sucesivamente, en lugar de por los valores numéricos que la contienen. En la tabla siguiente se muestran las direcciones de la tabla anterior ordenadas en orden alfabético en el campo Dirección IP.

Id. de máquina

DIRECCIÓN 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

Las direcciones que comienzan con 1 se muestran antes de las direcciones que comienzan con 2, y así sucesivamente. En la tabla siguiente se muestran las direcciones en el orden ascendente correcto.

Id. de máquina

DIRECCIÓN 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 que sea más fácil comprender los pasos necesarios para ordenar estas direcciones, puede dividir las direcciones IP en cuatro partes numéricas. Las direcciones deben ordenarse por la primera parte, después por cada valor de la primera parte, después por la segunda parte, y así sucesivamente. La tabla muestra cada parte de una columna diferente y, como las columnas contienen valores numéricos sencillos, es posible ordenar las columnas de izquierda a derecha en orden ascendente, como se muestra en la tabla siguiente.

PartI

ParteII

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 las cuatro partes por separado es el truco detrás de ordenar direcciones IP. En el procedimiento siguiente, se crea una consulta que, además del campo dirección IP, incluye cuatro columnas calculadas en las que cada columna almacena una parte de los valores de dirección. La primera columna calculada contendrán la primera parte numérica de la dirección, la segunda columna calculada contendrán la segunda parte numérica de la dirección, y así sucesivamente. En lugar de ordenar los registros por el campo DIRECCIÓN IP, la consulta ordenará los registros por las cuatro columnas calculadas.

Crear la consulta

Creará una consulta de selección denominada Direcciones IP ordenadas que muestre los registros en orden ascendente de direcciones IP. Suponga que la base de datos actual tiene una tabla denominada MachineDetails que incluye un campo de texto denominado IPAddress.

  1. Haga clic en Crear > Diseño de consulta

  2. Seleccione Agregar tablas(Mostrar tabla en Access 2013 ) y arrastre Detalles del equipo a la sección superior de la vista Diseño.

  3. Arrastre los campos Id. de máquina e DIRECCIÓN IP a la cuadrícula de diseño de la consulta.

  4. Ya está listo para agregar las columnas calculadas. En la primera columna en blanco de la derecha, escriba la expresión PartI: Val(Left([IPAddress],(InStr(1,[IPAddress],""). -1))) en la fila Campo. La expresión devuelve los caracteres anteriores al primer punto (.) en el campo DIRECCIÓN IP.

    Ahora, revise la expresión. Como no sabe cuántos dígitos forman la primera parte de la dirección, use la función InStr para buscar la posición del primer punto. Restar 1 (para excluir el período) devuelve el número de dígitos de la primera parte. A continuación, use este número con la función Izquierda para extraer muchos caracteres, empezando desde el carácter más a la izquierda, del campo DIRECCIÓN IP. Por último, llame a la función Val para convertir los caracteres devueltos por la función Izquierda en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  5. Guarde la consulta haciendo clic en Guardar en la barra de herramientas de acceso rápido. Es una buena idea hacerlo después de cada paso intermedio.

  6. Agregue la columna para la segunda parte de la dirección. En la columna a la derecha de PartI, escriba PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],""). +1,InStr(InStr(1,[IPAddress],""). +1,[Dirección IP],".") -InStr(1,[IPAddress],""). -1)) en la fila Campo. La expresión devuelve los caracteres que se encuentran entre el primer y el segundo período en el campo DIRECCIÓN IP.

    Vuelva a revisar la expresión. Como no sabe cuántos dígitos forman la segunda parte de la dirección o exactamente dónde comienza la segunda parte (porque no cuánto tiempo dura la primera parte), use la función InStr para buscar las posiciones de los períodos. A continuación, use la función Medio para extraer los caracteres que siguen al primer período pero preceden al segundo período. Por último, llame a la función Val para convertir los caracteres devueltos por la función Medio en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  7. Agregue la columna para la tercera parte de la dirección. En la columna a la derecha de PartII, escriba PartIII: Val(Mid([IPAddress],InStr(InStr(1,[IPAddress],""). +1,[Dirección IP],".") +1,InStr(InStr(InStr(1,[IPAddress],""). +1,[Dirección IP],".") +1,[Dirección IP],".") -InStr(InStr(1,[IPAddress],".") +1,[Dirección IP],".") -1)) en la fila Campo. La expresión devuelve los caracteres que se encuentran entre el segundo y el tercer período en el campo DIRECCIÓN IP.

    Vuelva a revisar la expresión. Como no sabe cuántos dígitos forman la tercera parte de la dirección o exactamente dónde comienza la tercera parte (porque no sabe cuánto tiempo tienen la primera y la segunda parte), use la función InStr para buscar las posiciones de los períodos. A continuación, use la función Medio para extraer los caracteres que siguen al segundo período pero preceden al tercer período. Por último, llame a la función Val para convertir los caracteres devueltos por la función Medio en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  8. Agregue la columna para la cuarta y última parte de la dirección. En la columna a la derecha de PartIII, escriba PartIV: Val(Right([IPAddress],Len([IPAddress])-InStr(InStr(InStr(1,[IPAddress],""). +1,[Dirección IP],".") +1,[DIRECCIÓN IP],"."))) en la fila Campo. La expresión devuelve los caracteres que siguen al último punto.

    Vuelva a revisar la expresión. La clave es buscar la ubicación del tercer período y, a continuación, extraer todos los caracteres que le siguen. Como no sabe exactamente dónde se encuentra el tercer período, llame tres veces a la función InStr para buscar la posición del tercer período. A continuación, use la función Len para calcular el número de dígitos de la cuarta parte. A continuación, se usa el número de dígitos devueltos con la función Derecha para extraer muchos caracteres de la parte derecha del campo IPAddress. Por último, llame a la función Val para convertir los caracteres devueltos por la función Medio en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  9. Establezca la fila Ordenar de las cuatro columnas calculadas en Ascendente.

    Importante    La fila Ordenar de la columna IPAddress debe quedar en blanco.

    Si desea ordenar por otros valores de campo, además de las direcciones, coloque los campos a la izquierda o a la derecha de las cuatro columnas calculadas. No coloque los otros campos de ordenación entre las columnas calculadas.

  10. El siguiente paso es ocultar las cuatro columnas calculadas de la hoja de datos. Pero antes de hacerlo, cambie a la vista Hoja de datos para ver el resultado de las expresiones en las columnas calculadas. En la tabla siguiente se muestran las columnas que verá en la vista Hoja de datos.

    Id. de máquina

    DIRECCIÓN IP

    PartI

    ParteII

    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. Vuelva a la vista Diseño y desactive la casilla de la fila Mostrar de las cuatro columnas calculadas. Esto impide que las columnas calculadas se muestren en la vista Hoja de datos.

  12. Opcionalmente, especifique criterios para excluir registros de la consulta.

  13. Cambie a la vista Hoja de datos para ver los registros en orden ordenado. Verá los registros ordenados correctamente en orden ascendente de las direcciones IP.

Más usos para direcciones IP ordenadas

Validar direcciones IP durante la entrada de datos

Si desea validar direcciones sin escribir código, puede hacerlo en una medida limitada estableciendo la propiedad InputMask del campo en ###.###########;0;" " y la propiedad Format del campo de dirección IP &&&&&&&&&&&&.

¿Qué hace la máscara de entrada? Al empezar a escribir en el campo de dirección, la máscara de entrada le impide escribir caracteres distintos de números y espacios entre los tres períodos. Si una parte numérica es un número de dos dígitos, deje el tercer dígito en blanco o escriba un espacio en su lugar. Tenga en cuenta que esta máscara de entrada no advierte al usuario si omite escribir una o varias partes de la dirección, o escribe solo espacios en lugar de un valor numérico. Por ejemplo, "345. .3. " se aceptaría como una dirección válida.

¿Qué hace el formato de presentación? Cuando termine de escribir y salga del campo, el formato de presentación quita los espacios de la dirección y muestra solo los números y los períodos. Por lo tanto, si escriba "354.35 .2 .12", la dirección se mostrará como "354.35.2.12". Tenga en cuenta que si hace clic dentro de la dirección o presiona F2 (para entrar en el modo de edición) cuando se selecciona la dirección, los espacios volverán a aparecer.

Sugerencia: Si desea copiar una dirección, desplazarse a la columna o control anterior, presione TAB para seleccionar la dirección con formato y, a continuación, haga clic en Copiar. Al hacerlo, no copiará la cadena de dirección que contiene espacios.

Ordenar registros en un formulario o informe por direcciones IP

Si necesita crear un formulario o un informe en el que los registros se ordenan por direcciones IP, base el nuevo objeto en una consulta que ordene las direcciones como se ha descrito anteriormente, en lugar de en la tabla que almacena las direcciones.

Volver al principio

¿Necesita más ayuda?

Ampliar sus conocimientos de Office
Explorar los cursos
Obtener nuevas características primero
Únase a los participantes de Office Insider

¿Le ha sido útil esta información?

¡Gracias por sus comentarios!

Gracias por sus comentarios. Quizá le interese ponerse en contacto con uno de nuestros agentes de soporte de Office.

×