문제

VBA를 사용하여 반환하는 기능 세트가 있습니다. ADODB.Recordset 모든 열은 다음과 같습니다 adVarChar. 불행히도 이것은 숫자가 텍스트로 정렬되는 것을 의미합니다. 따라서 1,7,16,22는 1,16,22,7이됩니다

열의 유형을 변경하지 않고 숫자를 텍스트 열로 정렬 할 수있는 메소드가 있습니까?

Sub TestSortVarChar()

  Dim strBefore, strAfter As String

  Dim r As ADODB.RecordSet

  Set r = New ADODB.RecordSet
  r.Fields.Append "ID", adVarChar, 100
  r.Fields.Append "Field1", adVarChar, 100
  r.Open


  r.AddNew
  r.Fields("ID") = "1"
  r.Fields("Field1") = "A"

  r.AddNew
  r.Fields("ID") = "7"
  r.Fields("Field1") = "B"

  r.AddNew
  r.Fields("ID") = "16"
  r.Fields("Field1") = "C"

  r.AddNew
  r.Fields("ID") = "22"
  r.Fields("Field1") = "D"


  r.MoveFirst
  Do Until r.EOF
    strBefore = strBefore & r.Fields("ID") & " " & r.Fields("Field1") & vbCrLf
    r.MoveNext
  Loop

  r.Sort = "[ID] ASC"


  r.MoveFirst
  Do Until r.EOF
    strAfter = strAfter & r.Fields("ID") & " " & r.Fields("Field1") & vbCrLf
    r.MoveNext
  Loop

  MsgBox strBefore & vbCrLf & vbCrLf & strAfter

End Sub

NB : 나는 Project 2003 및 Excel 2003을 사용하고 있으며 참조를 사용하고 있습니다. Microsoft ActiveX DataObject 2.8 라이브러리

도움이 되었습니까?

해결책

최소 최대 숫자만의 0이있는 0이있는 왼쪽 패드. 예를 들어

0001 0010 0022 1000

올바른 $ ()를 사용하여이를 달성 할 수 있습니다.

다른 팁

val () 함수를 사용하여 텍스트 열에서 수치 적으로 정렬하십시오. 예시:

SELECT ID, Field1
FROM tablename
ORDER BY Val(Field1);
라이센스 : CC-BY-SA ~와 함께 속성
제휴하지 않습니다 StackOverflow
scroll top