萬盛學電腦網

 萬盛學電腦網 >> 數據庫 >> access教程 >> access2007教程 >> Access 2007按區分大小寫次序對記錄排序

Access 2007按區分大小寫次序對記錄排序

時 間:2008-7-24 8:10:31
作 者:Microsoft
摘 要:按區分大小寫次序對記錄排序
正 文:

Microsoft Office Access 2007 以升序或降序對記錄排序時不考慮大小寫。但是,通過編寫幾行 Visual Basic for Applications (VBA) 代碼,即可按文本的 ASCII 字符值對文本排序。基於 ASCII 值排序可以將大寫字母與小寫字母區別開來,並產生區分大小寫的次序。

下表演示了 Access 中的升序排序次序與區分大小寫排序次序的差異:

排序前 升序次序 區分大小寫次序 c a A D A B a B C d b D B c a C C b A D c b d d

盡管“升序次序”列中的結果可能最初出現在不可預測的某個位置,但它們並非如此。在“升序次序”列中,“a”出現在“A”之前,而“B”出現“b”之前。之所以這樣,是因為在計算為文本值時,無論小寫還是大寫,“A”=“a”並且“B”=“b”。Access 在這裡考慮了值的原始次序。在“排序前”列中,“a”位於“A”的前面,“B”位於“b”的前面。

執行區分大小寫排序操作時,文本值被替換為它們的 ASCII 值。例如,A = 65,a = 97,B = 66,b = 98,等等。

編寫 VBA 代碼

  1. 創建 VBA 模塊,並在“聲明”節中鍵入以下行(如果那裡還沒有它):

     

    Option Explicit

     

  2. 在 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
    

    可以從查詢調用上述用戶定義函數 StrToHex。將排序字段的名稱傳遞給此函數時,它將按區分大小寫的次序對字段值排序。

  3. 現在,創建用來調用此函數的查詢。

    “創建”選項卡上的“其他”組中,單擊“查詢設計”

  4. “顯示表”對話框中,單擊希望排序的表,然後單擊“添加”
  5. 將所需字段拖到網格中。
  6. 在第一個空白列的“字段”行中,鍵入 Expr1: StrToHex([SortField])

    StrToHex 是在前面創建的用戶定義函數。SortField 是包含區分大小寫值的字段的名稱。

  7. “排序”單元格中,單擊“升序”“降序”

    如果選擇升序次序,則以大寫字母開頭的值將出現在那些以小寫字母開頭的值之前。應用降序次序則以相反方式排序。

  8. 切換至數據表視圖。

    Access 將顯示記錄,這些記錄以區分大小寫的次序進行排序。

copyright © 萬盛學電腦網 all rights reserved