Sortieren von ADO-Cord-Textfeld als Zahlen
Frage
VBA ich mit einer Reihe von Funktionen, die ein ADODB.Recordset
wo alle Spalten als adVarChar
zurück. Leider bedeutet dies, Numerik als Text sortiert bekommen. So 1,7,16,22 wird 1,16,22,7
Gibt es Methoden, die Numerik als Textspalten, ohne auf die Änderung der Typ der Spalte sortieren können?
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: Ich bin mit Project 2003 und Excel 2003 und Referenzierung Microsoft ActiveX Datenobjekt 2.8 Bibliothek
Lösung
Linke-Pad mit Zeros mit mindestens so vielen wie maximaler Anzahl Ziffern. z.
0001 0010 0022 1000
Sie können die Right $ () verwenden, um dies zu erreichen.
Andere Tipps
Mit der Val () Funktion numerisch auf einer Textspalte zu sortieren. Beispiel:
SELECT ID, Field1
FROM tablename
ORDER BY Val(Field1);
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow