문제
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);
제휴하지 않습니다 StackOverflow