Access sẽ 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 liên quan đến trường hợp. Tuy nhiên, bằng cách viết một vài dòng mã Visual Basic for Applications (VBA), bạn có thể sắp xếp văn bản theo giá trị ký tự ASCII. Việc sắp xếp dựa trên giá trị ASCII phân biệt chữ hoa với chữ thường và theo thứ tự phân biệt chữ hoa.
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:
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ù các kết quả trong cột Thứ tự tăng dần có thể xuất hiện lúc đầu có vẻ hơi khó dự đoán, nhưng chúng không như vậy. Trong cột Thứ tự tăng dần, "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 được đánh giá là giá trị văn bản, "A" = "a" và "B" = "b," dù là chữ thường hay chữ hoa. Access tính đến 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" trước "b".
Khi thao tác sắp xếp phân biệt chữ hoa chữ thường được thực hiện, 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, b = 98, v.v.
Viết mã VBA
-
Tạo mô-đun VBA và nhập dòng sau đây vào mục Khai báo, nếu chưa có ở đó:
Option Explicit
-
Nhập quy trình sau đây 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 Function
Hàm do người dùng xác định trước đó, StrToHex, có thể được gọi từ một truy vấn. Khi bạn chuyển tên trường sắp xếp sang hàm này, nó sẽ sắp xếp các giá trị trường theo thứ tự phân biệt chữ hoa/thường.
-
Bây giờ, tạo một truy vấn mà từ đó bạn sẽ 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 các trường bạn muốn vào lưới.
-
Trong cột trống đầu tiên, trong hàng Trường , nhập Expr1: StrToHex([SortField]).
StrToHex là hàm do người dùng xác định mà bạn đã tạo trước đó. SortField là tê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 , bấm vào Tăng dần hoặc Giảm dần.
Nếu bạn chọn thứ tự tăng dần, 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. Việc áp dụng sắp xếp thứ tự giảm dần sẽ thực hiện điều 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.