Access 대소문자에 관계없이 레코드를 오름차순 또는 내림차순으로 정렬합니다. 그러나 VBA(Visual Basic for Applications) 코드의 몇 줄을 작성하면 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 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. 테이블 추가(액세스에 테이블 표시)를 선택합니다.

  5. 원하는 필드를 그리드로 끕니다.

  6. 첫 번째 빈 열의 필드 행에 Expr1: StrToHex([SortField])를 입력합니다.

    StrToHex는 이전에 생성한 사용자 정의 함수입니다. SortField는 대/소문자를 구분하는 값을 포함하는 필드의 이름입니다.

  7. 정렬 셀에서 오름차순 또는 내림차순을 클릭합니다.

    오름차순을 선택할 경우 소문자로 시작하는 값 앞에 대문자로 시작하는 값이 나타납니다. 내림차순 정렬을 적용하면 그 반대입니다.

  8. 데이터시트 보기로 전환합니다.

    Access는 대/소문자를 구분하는 순서로 정렬된 레코드를 표시합니다.

맨 위로 이동

도움이 더 필요하세요?

더 많은 옵션을 원하세요?

구독 혜택을 살펴보고, 교육 과정을 찾아보고, 디바이스를 보호하는 방법 등을 알아봅니다.

커뮤니티를 통해 질문하고 답변하고, 피드백을 제공하고, 풍부한 지식을 갖춘 전문가의 의견을 들을 수 있습니다.