Hallo zusammen,
ich habe eine Aufgabenstellung bei der ich gerne Eure Hilfe in Anspruch nehmen würde. Ich habe diverse Dokumente, in denen in einem Textfeld u.a. eine Nummerierung enthalten ist.
Diese Dokumente will ich als Liste (Dim myList List as NotesDocument) korrekt sortiert haben, z.B. 8.1.4.2 und danach 8.2.1.1 und NICHT 8.10.
Die Dokumente erhalte ich über eine Auswahl mittels Picklist als NotesDocumentCollection.
Ich hoffe ich habe mich verständlich ausgedrückt, wenn nicht bitte nachfragen.
Anbei eine Beispiel der Nummerierung:
8.1.1
8.1.2
8.1.2
8.1.4
8.1.4.2
8.10
8.12
8.15
8.2.1.1
8.2.1.10
8.2.1.2
8.2.1.2
8.3.1.1
8.3.2.1
8.4
8.5.1
8.5.2
8.6
8.7.1
8.7.2
8.8.1.1
8.8.1.2
8.8.1.3
8.8.1.4
8.8.2.1
8.8.2.2
8.8.2.3
8.8.2.4
8.9.1
8.9.2
Vielen Dank schon mal!
Gruß,
Markus
Hier mal meine Funktion um die Werte zu normieren, habe die Punkte zwischen den Werte weggelassen. Jetzt noch in ein Array und dieses sortieren. Dann gehts so langsam weiter!
Function umwandeln_OECD( strNr As String, strNrNormiert As String, strErrMsg As String ) As Boolean
%REM ------------------------------------------------------------
Aufgabe:
Erstellt: 2008-01-15, Autor: Markus Langer
Parameter:
- strNr [in] - die OECD Nummer nicht normiert
- strNrNormiert [out] - die OECD Nummer in normierten Form
- strErrMsg [out] - im Fehlerfall die Fehlermeldung
Rückgabe: True, wenn erfolgreich / sonst False
Beispiel:
8.2.1.1 -> 008002001001
8.10 -> 008010000000
Historie:
2008-01-15 Markus Langer
- Funktion neu erstellt
%END REM ----------------------------------------------------
On Error Goto ErrorHandling
Const TRENNER$ = "." 'Trennzeichen zwischen den Zahlen
Const MAX_EBENEN% = 5 'Maximale Anzahl Ebenen
Const MAX_STELLEN% = 3 'Maximale Anzahl Zahlen pro Ebene
Dim arrEinzelWerte() As String
Dim strNrTmp As String
Dim intCount As Integer
Dim x As Integer
strNrNormiert = ""
If strNr = "" Then Goto EndJmp
'Textstring in die einzelnen Werte aufteilen
If ScriptExplode( strNr, TRENNER, arrEinzelWerte, strErrMsg ) = False Then Error 15010, strErrMsg
'durch alle Werte laufen und in die normierte Form bringen
Forall strWert In arrEinzelWerte
strNrTmp = Right$( String$( MAX_STELLEN, "0" ) + strWert, MAX_STELLEN )
strNrNormiert = strNrNormiert + strNrTmp
intCount = intCount + 1
End Forall
'Falls noch Null-Werte angehängt werden müssen
If ( intCount < MAX_EBENEN ) Then
For x = intCount To ( MAX_EBENEN - 1 )
strNrNormiert = strNrNormiert + String$( MAX_STELLEN, "0" )
Next
End If
EndJmp:
umwandeln_OECD = True
ExitJmp:
Exit Function
ErrorHandling:
strErrMsg = Error$
If Err < 15000 Then strErrMsg = strErrMsg & " [sbProductDataSheed - umwandeln_OECD - Zeile " & Cstr ( Erl ) & "]"
umwandeln_OECD = False
Resume ExitJmp
End Function