Sortieren von Datensätzen mit Berücksichtigung der Groß-/Kleinschreibung

Gilt für
Access für Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access sortiert Datensätze in aufsteigender oder absteigender Reihenfolge ohne Berücksichtigung der Groß-/Kleinschreibung. Sie können jedoch einige Zeilen Visual Basic for Applications (VBA)-Code schreiben, um Text nach seinen ASCII-Zeichenwerten zu sortieren. Bei der Sortierung nach ASCII-Werten wird zwischen Groß- und Kleinbuchstaben unterschieden und die Groß-/Kleinschreibung wird beachtet.

Die folgende Tabelle veranschaulicht, wie sich eine aufsteigende Sortierreihenfolge in Access von einer Sortierreihenfolge mit Berücksichtigung der Groß-/Kleinschreibung unterscheidet:

Reihenfolge vorsortieren Aufsteigende Reihenfolge Groß-/Kleinschreibung beachten
c a A
D A B
a B C
d b D
B c a
C C b
A D c
b t d

Obwohl die Ergebnisse in der Spalte Aufsteigende Reihenfolge auf den ersten Blick unvorhersehbar erscheinen, ist dies nicht der Fall. In dieser Spalte wird "a" vor "A" und "B" vor "b" angezeigt. Dies liegt daran, dass , wenn Access sie als Textwerte auswertet, "A" = "a" und "B" = "b", unabhängig davon, ob es sich um Klein- oder Großbuchstaben handelt. Access verwendet dann die ursprüngliche Reihenfolge der Werte. In der Spalte Vorsortierreihenfolge kommt "a" vor "A" und "B" vor "b".

Wenn die Sortierung unter 1000-Groß-/Kleinschreibung ausgeführt wird, werden die Textwerte durch ihre ASCII-Werte ersetzt. Beispiel: A = 65, a = 97, B = 66 und b = 98.

Schreiben Sie den VBA-Code

  1. Erstellen Sie ein VBA-Modul. Geben Sie im Abschnitt Deklarationen die folgende Zeile ein, falls sie noch nicht vorhanden ist:

    Option Explicit
    
  2. Geben Sie die folgende Prozedur in ein Modul im Visual Basic-Editor ein:

    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
    

    Die benutzerdefinierte StrToHex Funktion kann über eine Abfrage aufgerufen werden. Wenn Sie den Namen des Sortierfelds an diese Funktion übergeben, werden die Feldwerte in der Reihenfolge sortiert, in der die Groß-/Kleinschreibung beachtet wird.

  3. Erstellen Sie eine Abfrage, die diese Funktion aufruft. Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf.

  4. Wählen Sie Tabellen hinzufügen (Tabelle in Access anzeigen ) aus.

  5. Ziehen Sie die gewünschten Felder in das Raster.

  6. Geben Sie in der ersten leeren Spalte in der Zeile Feld ein Expr1: StrToHex([SortField]). StrToHex ist die benutzerdefinierte Funktion, die Sie zuvor erstellt haben. Ersetzen Sie durch SortField den Namen des Felds, das die Groß-/Kleinschreibung berücksichtigt.

  7. Klicken Sie im Feld Reihenfolge auf Aufsteigend oder Absteigend. Wenn Sie aufsteigende Reihenfolge auswählen, werden Werte, die mit Großbuchstaben beginnen, vor Werten angezeigt, die mit Kleinbuchstaben beginnen. Absteigende Reihenfolge bewirkt das Gegenteil.

  8. Wechseln Sie zur Datenblattansicht. Access zeigt die Datensätze an, sortiert nach Groß- und Kleinschreibung.