In Microsoft Office Access 2007 werden Datensätze ohne Berücksichtigung der Groß-/Kleinschreibung in aufsteigender oder absteigender Reihenfolge sortiert. Durch Schreiben einiger VBA-Codezeilen (Visual Basic für Applikationen) können Sie jedoch Text nach den ASCII-Zeichenwerten sortieren. Bei der Sortierung auf der Basis der ASCII-Werte wird zwischen Großbuchstaben und Kleinbuchstaben unterschieden, sodass sich eine Reihenfolge mit Berücksichtigung der Groß-/Kleinschreibung ergibt.
Die folgende Tabelle veranschaulicht die Unterschiede zwischen einer aufsteigenden Sortierreihenfolge in Access und einer Sortierreihenfolge mit Berücksichtigung der Groß-/Kleinschreibung:
| Reihenfolge vor der Sortierung |
Aufsteigende Reihenfolge |
Reihenfolge mit Berücksichtigung der Groß-/Kleinschreibung |
| c |
a |
A |
| D |
A |
B |
| a |
B |
C |
| d |
b |
D |
| B |
c |
a |
| C |
C |
b |
| A |
D |
c |
| b |
d |
d |
Obwohl die Ergebnisse in der Spalte Aufsteigende Reihenfolge zunächst unvorhersehbar scheinen mögen, ist dies nicht der Fall. In der Spalte Aufsteigende Reihenfolge wird "a" vor "A" und "B" vor "b" angezeigt. Dies ist der Fall, da bei der Auswertung als Textwerte unabhängig von der Groß-/Kleinschreibung Folgendes gilt: "A" = "a" und "B" = "b". In Access wird die ursprüngliche Reihenfolge der Werte berücksichtigt. In der Spalte Reihenfolge vor der Sortierung steht "a" vor "A" und "B" vor "b".
Wenn der Sortiervorgang mit Berücksichtigung der Groß-/Kleinschreibung ausgeführt wird, werden die Textwerte durch ihre ASCII-Werte ersetzt. Beispielsweise A = 65, a = 97, B = 66, b = 98 usw.
Schreiben des VBA-Codes
- Erstellen Sie ein VBA-Modul, und geben Sie die folgende Zeile in den Deklarationsbereich ein, falls sie noch nicht dort angezeigt wird:
Option Explicit
- 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 vorstehende benutzerdefinierte StrToHex-Funktion kann aus einer Abfrage aufgerufen werden. Wenn Sie den Namen des Sortierfelds an diese Funktion weitergeben, werden die Feldwerte mit Berücksichtigung der Groß-/Kleinschreibung sortiert.
- Erstellen Sie jetzt eine Abfrage, aus der Sie diese Funktion aufrufen werden.
Klicken Sie auf der Registerkarte Erstellen in der Gruppe Andere auf Abfrageentwurf.
- Klicken Sie im Dialogfeld Tabelle anzeigen auf die zu sortierende Tabelle, klicken Sie dann auf Hinzufügen.
- Ziehen Sie die gewünschten Felder in das Raster.
- Geben Sie in der ersten leeren Spalte in die Zeile Feld die Zeichenfolge Expr1: StrToHex([SortField]) ein.
StrToHex ist die benutzerdefinierte Funktion, die Sie vorher erstellt haben. SortField ist der Name des Felds, das die Werte mit Berücksichtigung der Groß-/Kleinschreibung enthält.
- Klicken Sie in der Zelle Sortieren auf Aufsteigend oder auf Absteigend.
Wenn Sie die aufsteigende Reihenfolge ausgewählt haben, werden Werte, die mit Großbuchstaben beginnen, vor den mit Kleinbuchstaben beginnenden angezeigt. Das Anwenden einer absteigenden Reihenfolge bewirkt das Gegenteil.
- Wechseln Sie zur Datenblattansicht.
In Access werden die Datensätze sortiert mit Berücksichtigung der Groß-/Kleinschreibung angezeigt.
Seitenanfang