時 間:2008-7-24 8:10:31
作 者:Microsoft
摘 要:按區分大小寫次序對記錄排序
正 文:
Microsoft Office Access 2007 以升序或降序對記錄排序時不考慮大小寫。但是,通過編寫幾行 Visual Basic for Applications (VBA) 代碼,即可按文本的 ASCII 字符值對文本排序。基於 ASCII 值排序可以將大寫字母與小寫字母區別開來,並產生區分大小寫的次序。
下表演示了 Access 中的升序排序次序與區分大小寫排序次序的差異:
盡管“升序次序”列中的結果可能最初出現在不可預測的某個位置,但它們並非如此。在“升序次序”列中,“a”出現在“A”之前,而“B”出現“b”之前。之所以這樣,是因為在計算為文本值時,無論小寫還是大寫,“A”=“a”並且“B”=“b”。Access 在這裡考慮了值的原始次序。在“排序前”列中,“a”位於“A”的前面,“B”位於“b”的前面。
執行區分大小寫排序操作時,文本值被替換為它們的 ASCII 值。例如,A = 65,a = 97,B = 66,b = 98,等等。
Option Explicit
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
可以從查詢調用上述用戶定義函數 StrToHex。將排序字段的名稱傳遞給此函數時,它將按區分大小寫的次序對字段值排序。
在“創建”選項卡上的“其他”組中,單擊“查詢設計”。
StrToHex 是在前面創建的用戶定義函數。SortField 是包含區分大小寫值的字段的名稱。
如果選擇升序次序,則以大寫字母開頭的值將出現在那些以小寫字母開頭的值之前。應用降序次序則以相反方式排序。
Access 將顯示記錄,這些記錄以區分大小寫的次序進行排序。