Datensätze in Groß-/Kleinschreibung sortieren
Access sortiert Datensätze ohne Rücksicht auf Groß- und Kleinschreibung in aufsteigender oder absteigender Reihenfolge. Indem Sie jedoch einige Zeilen VBA-Code (Visual Basic for Applications) schreiben, können Sie Text nach seinen ASCII-Zeichenwerten sortieren. Die Sortierung anhand der ASCII-Werte unterscheidet die Großbuchstaben von den Kleinbuchstaben und führt zu einer case-sensitiven Reihenfolge.
Die folgende Tabelle zeigt, wie sich eine aufsteigende Sortierreihenfolge in Access von einer Sortierreihenfolge unterscheidet, bei der die Groß-/Kleinschreibung beachtet wird:
Reihenfolge vorsortieren | Aufsteigende Reihenfolge | Groß-/Kleinschreibung beachten |
c | a | EIN |
D | EIN | B |
a | B | C |
d | b | D |
B | c | a |
C | C | b |
EIN | D | c |
b | d | d |
Obwohl die Ergebnisse in der Spalte „Aufsteigende Reihenfolge" zunächst etwas unvorhersehbar erscheinen mögen, sind sie es nicht. In der Spalte „Aufsteigende Reihenfolge" erscheint „a" vor „A" und „B" erscheint vor „b". Dies liegt daran, dass „A" = „a" und „B" = „b", wenn sie als Textwerte ausgewertet werden, unabhängig davon, ob es sich um Klein- oder Großbuchstaben handelt. Der Zugriff berücksichtigt die ursprüngliche Reihenfolge der Werte. In der Spalte Vorsortierreihenfolge steht „a" vor „A" und „B" vor „b".
Wenn der Sortiervorgang mit Berücksichtigung der Groß-/Kleinschreibung durchgeführt wird, werden die Textwerte durch ihre ASCII-Werte ersetzt. Beispiel: A = 65, a = 97, B = 66, b = 98 und so weiter.
Schreiben Sie den VBA-Code
Erstellen Sie ein VBA-Modul und geben Sie die folgende Zeile im Abschnitt Deklarationen ein, falls sie noch nicht vorhanden ist:
Option Explizit
Geben Sie die folgende Prozedur in einem Modul im Visual Basic-Editor ein:
Funktion StrToHex (S As Variant) As Variant
'
' Konvertiert einen String in eine Reihe von Hexadezimalziffern.
' Beispielsweise gibt StrToHex(Chr(9) & "A~") 09417E zurück.
'
Dim Temp als String, I als Integer
Wenn VarType(S) <> 8 Then
StrToHex = S
Anders
Temp = ""
Für I = 1 bis Len(S)
Temp = Temp & Format(Hex(Asc(Mid(S, I, 1))), "00")
Als nächstes ich
StrToHex = Temp
Ende Wenn
Funktion beendenDie vorhergehende benutzerdefinierte Funktion, StrToHex, kann aus einer Abfrage aufgerufen werden. Wenn Sie den Namen des Sortierfelds an diese Funktion übergeben, werden die Feldwerte in Groß-/Kleinschreibung sortiert.
Erstellen Sie nun eine Abfrage, aus der Sie diese Funktion aufrufen.
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Abfragen auf Abfrageentwurf .
Wählen Sie Tabellen hinzufügen ( Tabelle in Access 2013 anzeigen).
Ziehen Sie die gewünschten Felder in das Raster.
Geben Sie in der ersten leeren Spalte in der Feldzeile Expr1: StrToHex ( [ SortField ]) ein.
StrToHex ist die benutzerdefinierte Funktion, die Sie zuvor erstellt haben. SortField ist der Name des Felds, das die Werte enthält, bei denen die Groß-/Kleinschreibung beachtet wird.
Klicken Sie in der Zelle Sortieren auf Aufsteigend oder Absteigend .
Wenn Sie die aufsteigende Reihenfolge wählen, werden die Werte, die mit Großbuchstaben beginnen, vor denen angezeigt, die mit Kleinbuchstaben beginnen. Das Anwenden einer Sortierung in absteigender Reihenfolge bewirkt das Gegenteil.
Wechseln Sie zur Datenblattansicht.
Access zeigt die Datensätze sortiert nach Groß- und Kleinschreibung an.
No comments:
Post a Comment