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

En este tema se describe el procedimiento para ordenar las direcciones ip almacenadas en una base de datos de Access.

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.

MachineID

Employee

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

Como 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 en 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, luego por el segundo dígito y así sucesivamente, en lugar de por los valores numéricos que conforman la dirección. En la tabla siguiente se muestran las direcciones de la tabla anterior ordenadas en orden alfabético en el campo IPAddress.

MachineID

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 por 1 se muestran antes de las direcciones que comienzan por 2, y así sucesivamente. En la tabla siguiente se muestran las direcciones en el orden ascendente correcto .

MachineID

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, divida las direcciones IP en cuatro partes numéricas. Las direcciones deben ordenarse por la primera parte, por cada valor de la primera, por la segunda, y así sucesivamente. La tabla muestra cada parte en una columna diferente y, como las columnas contienen valores numéricos simples, 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 que hay detrás de ordenar las 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 contiene la primera parte numérica de la dirección, la segunda columna calculada contiene la segunda parte numérica de la dirección y así sucesivamente. En lugar de ordenar los registros por el campo IPAddress, la consulta ordenará los registros por las cuatro columnas calculadas.

Crear la consulta

Creará una consulta de selección denominada Direcciones IP ordenadas que muestra los registros en orden ascendente de las 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) y arrastre Detalles del equipo a la sección superior de la vista Diseño.

  3. Arrastre los campos MachineID e IPAddress 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 IPAddress.

    Ahora, revise la expresión. Dado que no sabe cuántos dígitos conforman la primera parte de la dirección, use la función EnStr 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 esos muchos caracteres, empezando desde el carácter del extremo izquierdo, desde el campo IPAddress. 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 de la segunda parte de dirección. En la columna a la derecha de PartI, escriba PartII: Val(Mid([IPAddress],InStr(1,[IPAddress],".") +1,InStr(InStr(1,[IPAddress],".") +1,[IpAddress],".") -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 IPAddress.

    Una vez más, revise la expresión. Como no sabe cuántos dígitos conforman la segunda parte de la dirección o exactamente dónde empieza la segunda parte (porque no cuánto tiempo dura la primera parte), use la función EnStr para buscar las posiciones de los períodos. A continuación, use la función Medio para extraer los caracteres que siguen al primer punto pero preceden al segundo punto. Por último, llama a la función Val para convertir los caracteres devueltos por la función Mid en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  7. Agregue la columna de la tercera parte de dirección. En la columna a la derecha de PartII, escriba 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)) en la fila Campo . La expresión devuelve los caracteres que se encuentran entre el segundo y el tercer período en el campo IPAddress.

    Una vez más, revise la expresión. Dado que no sabe cuántos dígitos conforman la tercera parte de la dirección o exactamente dónde empieza la tercera parte (porque no sabe cuánto tiempo están la primera y la segunda parte), use la función EnStr para buscar las posiciones de los períodos. Después, use la función Medio para extraer los caracteres que siguen al segundo punto pero preceden al tercer punto. Por último, llama a la función Val para convertir los caracteres devueltos por la función Mid en un número. Este último paso es necesario porque el tipo de datos subyacente es Texto.

  8. Agregue la columna de 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,[IpAddress],".") +1,[IPAddress],"."))) en la fila Campo . La expresión devuelve los caracteres que siguen al último período.

    Una vez más, revise la expresión. La clave es buscar la ubicación del tercer punto y, a continuación, extraer todos los caracteres que siguen. Dado que no sabe exactamente dónde se encuentra el tercer período, llama a la función EnStr tres veces para encontrar la posición del tercer período. A continuación, use la función Largo para calcular el número de dígitos de la cuarta parte. El número de dígitos devueltos se usa con la función Derecha para extraer muchos caracteres de la parte derecha del campo IPAddress. Por último, llama a la función Val para convertir los caracteres devueltos por la función Mid 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 DIRECCIÓN IP debe dejarse 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 demás 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.

    MachineID

    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 los registros de la consulta.

  13. Cambie a la vista Hoja de datos para ver los registros ordenados. Verá los registros correctamente ordenados 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 hasta un límite estableciendo la propiedad InputMask del campo en ###.###.###.#.####; 0;" " y la propiedad Format del campo dirección IP a &&&&&&&&&&&&.

¿Qué hace la máscara de entrada? Al empezar a escribir en el campo de dirección, la máscara de entrada impide que escriba caracteres distintos de números y espacios entre los tres puntos. 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 avisa al usuario si omite la escritura de una o más partes de la dirección, o escribe solo espacios en lugar de un valor numérico. Por ejemplo, "345. .3. " se aceptaría como dirección válida.

¿Qué hace el formato de presentación? Cuando termine de escribir y deje el campo, el formato de presentación quita los espacios de la dirección y muestra solo los números y puntos. Por lo tanto, si escribió "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, vaya a la columna o control anterior, presione LA TECLA 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 describió anteriormente, en lugar de en la tabla que almacena las direcciones.

Principio de página

¿Necesita más ayuda?

¿Quiere más opciones?

Explore las ventajas de las suscripciones, examine los cursos de aprendizaje, aprenda a proteger su dispositivo y mucho más.

Las comunidades le ayudan a formular y responder preguntas, enviar comentarios y leer a expertos con conocimientos extensos.