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

War es hilfreich?

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
scroll top