Ordenar registros distinguiendo mayúsculas de minúsculas

Se aplica a
Access para Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access ordena los registros en orden ascendente o descendente, sin tener en cuenta las mayúsculas y minúsculas. Sin embargo, puede escribir algunas líneas de código de Visual Basic para Aplicaciones (VBA) para ordenar el texto por sus valores de caracteres ASCII. Al ordenar por valores ASCII, se distinguen las letras mayúsculas de las minúsculas y queda un orden que distingue mayúsculas de minúsculas.

En la tabla siguiente se muestra cómo un criterio de ordenación ascendente en Access difiere de un criterio de ordenación que distingue mayúsculas de minúsculas:

Antes del criterio de ordenación Orden ascendente Ordenar distinguiendo mayúsculas de minúsculas
c a A
D A B
a B C
d b D
B c a
C C b
A D c
b d d

Aunque los resultados en la columna de orden ascendente pueden parecer impredecibles al principio, no lo son. En esa columna, "a" aparece antes de "A" y "B" aparece antes de "b". Esto sucede porque, cuando Access los evalúa como valores de texto, "A" = "a" y "B" = "b", tanto si son minúsculas como mayúsculas. Access usa entonces el orden original de los valores. En la columna Antes del criterio de ordenación , "a" aparece antes de "A" y "B" viene antes de "b".

Cuando se ejecuta la ordenación que distingue mayúsculas de minúsculas, los valores de texto se reemplazan por sus valores ASCII. Por ejemplo, A = 65, a = 97, B = 66 y b = 98.

Escribir el código VBA

  1. Cree un módulo de VBA. En la sección Declaraciones , escriba la línea siguiente si aún no existe:

    Option Explicit
    
  2. Escriba el procedimiento siguiente en un módulo del Editor de Visual Basic:

    Function StrToHex(S As Variant) As Variant
        ' Converts a string to a series of hexadecimal digits.
        ' For example, StrToHex(Chr(9) & "A~") returns 09417E.
        Dim Temp As String, I As Integer
        If VarType(S) <> 8 Then
            StrToHex = S
        Else
            Temp = ""
            For I = 1 To Len(S)
                Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
            Next I
            StrToHex = Temp
        End If
    End Function
    

    La función definida por StrToHex el usuario se puede llamar desde una consulta. Al pasar el nombre del campo Ordenar a esta función, ordena los valores del campo en orden que distingue mayúsculas de minúsculas.

  3. Cree una consulta que llame a esta función. En el grupo Consultas de la pestaña Crear, haga clic en Diseño de la consulta.

  4. Seleccione Agregar tablas (Mostrar tabla en Access).

  5. Arrastre los campos que quiera para la cuadrícula.

  6. En la primera columna en blanco, en la fila Campo , escriba Expr1: StrToHex([SortField]). StrToHex es la función definida por el usuario que creó anteriormente. Reemplácelo SortField por el nombre del campo que contiene los valores que distinguen mayúsculas de minúsculas.

  7. En la celda Orden, haga clic en Ascendente o Descendente. Si elige un orden ascendente, los valores que comienzan con letras mayúsculas aparecen antes que los valores que comienzan por letras minúsculas. El orden descendente hace lo contrario.

  8. Cambiar a vista Hoja de datos. Access muestra los registros, ordenados en un orden que distingue mayúsculas de minúsculas.