title image


Smiley Re: A97: richtiges sortieren von Zahlenwerten in Textfeldern
Den erwähnten Tipp kann ich nicht so ganz nachvollziehen -wenn ein Feld Zahlen enthält, sollte es auch als Zahlenfeld angelegt werden. (Das Addieren von Telefonnummern kannst du auf diese Weise auch nicht verhindern, da Access ja alle möglichen impliziten Typumwandlungen macht...)Eine Postleitzahl ist in diesem Sinne keine "Zahl", sondern ein numerisches Textfeld (wird aber ja auch als Textfeld sortiert).Eine Menge, Betrag, Anzahl, Folgenummer ist halt per Definition eine Zahl und sollte auch dann als Zahl angelegt werden. Es gibt natürlich wie immer Grenzfälle, z.B. Hausnummern - die einerseits numerisch gezählt und sortiert werden, andererseits nichtnumerische Komponenten enthalten können. Da kann man sich eigentlich nur behelfen, indem man entweder separate (numerische) Sortierfelder einführt oder die Sortierung über ein berechnetes Feld macht:MeinSortFeld: ZLong([MeinFeld])Wenn du eine tolerantere Konversionsfunktion der folgenden Art nimmst:Function ConvNum(IVal) As Long'' ConvNum - Konvertiert numerischen Wert' in Variant Typ 3 (Long Integer)' Null und nichtnumerische Werte --> 0' extrahiert numerischen Wert'Dim Tmp As Long, Tmp1, I As Integer, j As Integer, Res As String, Ch As String * 1On Error GoTo Err_ConvNum Tmp = 0 If IsNull(IVal) Then Tmp = 0 ElseIf VarType(IVal) >= 2 And VarType(IVal) Tmp = CLng(IVal) ElseIf VarType(IVal) = 7 Then Tmp = CLng(IVal) ElseIf IsNumeric(IVal) Then Tmp = CLng(IVal) Else Tmp1 = Format(IVal, "0") Res = "" For j = 1 To Len(Tmp1) Ch = Mid(Tmp1, j, 1) If Ch >= "0" And Ch Next j For I = j To Len(Tmp1) Ch = Mid(Tmp1, I, 1) If Ch >= "0" And Ch Res = Res & Ch ElseIf Ch " " Then Exit For End If Next I If IsNumeric(Res) Then Tmp = CLng(Res) Else Tmp = 0 End If End IfExit_ConvNum: ConvNum = Tmp Exit FunctionErr_ConvNum: If Err 6 Then MsgBox Err.Description Resume Exit_ConvNumEnd Functiondarf das Feld auch nichtnumerische Komponenten enthalten...(Die Vorgehensweise ist aber recht ineffizient, und bei großen Datenmengen nicht zu empfehlen, da auf diese Weise keine Indizes verwendet werden können)Reinhard


Gruß aus dem Norden
Reinhard


Bitte immer die Access-Version angeben!
DB-Wiki


Wie man Fragen richtig stellt

YaccessAccess-FAQUnd ansonsten: Wikipedia




geschrieben von

Login

E-Mail:
  

Passwort:
  

Beitrag anfügen

Symbol:
 
 
 
 
 
 
 
 
 
 
 
 
 

Überschrift: