การเรียงลำดับระเบียนแบบตรงตามตัวพิมพ์ใหญ่-เล็ก

นำไปใช้กับ
Access for Microsoft 365 Access 2024 Access 2021 Access 2019 Access 2016

Access จะเรียงลําดับระเบียนจากน้อยไปหามากหรือจากมากไปหาน้อยโดยไม่คํานึงถึงตัวพิมพ์ใหญ่-เล็ก อย่างไรก็ตาม คุณสามารถเขียนโค้ด 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" ซึ่งเกิดขึ้นเนื่องจากเมื่อ Access ประเมินค่าเหล่านั้นเป็นค่าข้อความ "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 Editor:

    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. เลือก เพิ่มตาราง (แสดงตาราง ใน Access)

  5. ลากเขตข้อมูลที่คุณต้องการไปยังเส้นตาราง

  6. ในคอลัมน์ว่างคอลัมน์แรก ในแถว เขตข้อมูล ให้พิมพ์Expr1: StrToHex([SortField]) StrToHex คือฟังก์ชันที่ผู้ใช้กําหนดเองที่คุณสร้างไว้ก่อนหน้านี้ แทนที่ SortField ด้วยชื่อของเขตข้อมูลที่มีค่าตรงตามตัวพิมพ์ใหญ่-เล็ก

  7. ในเซลล์ เรียงลำดับ ให้คลิก จากน้อยไปหามาก หรือ จากมากไปหาน้อย ถ้าคุณเลือกลําดับจากน้อยไปหามาก ค่าที่ขึ้นต้นด้วยตัวพิมพ์ใหญ่จะปรากฏก่อนค่าที่ขึ้นต้นด้วยตัวอักษรพิมพ์เล็ก ลําดับจากมากไปหาน้อยจะตรงกันข้าม

  8. สลับไปยังมุมมองแผ่นข้อมูล Access จะแสดงระเบียนที่เรียงลำดับตรงตามตัวพิมพ์ใหญ่-เล็ก