Access sắp xếp các bản ghi theo thứ tự tăng dần hoặc giảm dần mà không phân quan đến chữ hoa/thường. Tuy nhiên, bạn có thể viết một vài dòng mã Visual Basic for Applications (VBA) để sắp xếp văn bản theo giá trị ký tự ASCII. Sắp xếp theo giá trị ASCII phân biệt chữ hoa với chữ thường và cung cấp cho bạn thứ tự phân biệt chữ hoa, chữ thường.
Bảng sau đây minh họa thứ tự sắp xếp tăng dần trong Access khác với thứ tự sắp xếp phân biệt chữ hoa, chữ thường như thế nào:
| Thứ tự sắp xếp trước | Thứ tự tăng dần | Thứ tự phân biệt chữ hoa, chữ thường |
|---|---|---|
| c | a | A |
| D | A | B |
| a | B | C |
| d | b | D |
| B | c | a |
| C | C | b |
| A | D | c |
| b | d | d |
Mặc dù kết quả trong cột Thứ tự tăng dần có vẻ như khó đoán lúc đầu nhưng thực tế không phải vậy. Trong cột đó, "a" xuất hiện trước "A" và "B" xuất hiện trước "b". Điều này xảy ra vì khi Access đánh giá các giá trị đó là giá trị văn bản, "A" = "a" và "B" = "b", dù đó là chữ thường hay chữ hoa. Access sau đó sẽ sử dụng thứ tự ban đầu của các giá trị. Trong cột Thứ tự sắp xếp trước , "a" đứng trước "A" và "B" đứng trước "b".
Khi sắp xếp phân biệt chữ hoa, chữ thường chạy, giá trị văn bản sẽ được thay thế bằng giá trị ASCII của chúng. Ví dụ, A = 65, a = 97, B = 66 và b = 98.
Viết mã VBA
Tạo mô-đun VBA. Trong phần Khai báo , hãy gõ dòng sau đây nếu nó chưa có ở đó:
Option ExplicitNhập quy trình sau vào mô-đun trong Trình soạn thảo 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 FunctionHàm do người dùng xác định
StrToHexcó thể được gọi từ một truy vấn. Khi bạn chuyển tên của trường sắp xếp cho hàm này, hàm sẽ sắp xếp các giá trị trường theo thứ tự phân biệt chữ hoa, chữ thường.Tạo truy vấn gọi hàm này. Trên tab Tạo, trong nhóm Truy vấn, bấm Thiết kế Truy vấn.
Chọn Thêm Bảng (Hiển thị Bảng trong Access).
Kéo trường bạn muốn đến lưới.
Trong cột trống đầu tiên, trong hàng Trường, nhập .
Expr1: StrToHex([SortField])StrToHexlà hàm do người dùng xác định mà bạn đã tạo trước đó. Thay thế bằngSortFieldtên của trường có chứa các giá trị phân biệt chữ hoa, chữ thường.Trong ô Sắp xếp , hãy bấm Tăng dần hoặc Giảm dần. Nếu bạn chọn thứ tự tăng dần, những giá trị bắt đầu bằng chữ hoa sẽ xuất hiện trước những giá trị bắt đầu bằng chữ thường. Thứ tự giảm dần ngược lại.
Chuyển sang dạng xem Biểu dữ liệu. Access sẽ hiển thị các bản ghi, được sắp xếp theo thứ tự phân biệt chữ hoa, chữ thường.