Das Notes Forum
Domino 9 und frühere Versionen => Entwicklung => Thema gestartet von: dirk_2909 am 15.10.02 - 13:21:09
-
@all
Hallo Leute!
Ich habe ein bearbeitbares Textfeld und Mehrfachwerte zugelassen.
Den Inhalt des Feldes schreibe ich in eine Variable (strInhalt).
Das Textfeld beinhaltet Kundennummern und zu jeder Kundennummer will ich jetzt die Kundennamen ermitteln.
Dazu muss ich aber jeden einzelnen Wert des Textfeldes ermitteln.
Wenn das Textfeld nur einen Wert hat, klappt alles super. Bei mehreren Werten klappt das natürlich nicht.
Wie kann ich den String in strInhalt mit LotusScript zerlegen(Seperator=";") oder
muss ich den Inhalt des Textfeldes in ein Array schreiben???? ???
Dirk
-
Du kannst mit folgendem Code einen String in ein Array zerlegen
Function StringToArray( Byval stringList As String, delimiter As String ) As Variant
' Description:
' The StringToArray function converts a delimited string or list to an array.
' Declare the array
Dim resultArray( ) As Variant
' Set initial count
Dim elementCount As Integer
elementCount = -1
' Build the array from the string
While ( Instr( stringList, delimiter ) <> 0 )
elementCount = elementCount + 1
Redim Preserve resultArray( elementCount ) As Variant
resultArray( elementCount ) = Trim$( Left$( stringList, Instr( stringList, delimiter ) - 1) )
stringList = Right$( stringList, ( Len( stringList ) - Instr( stringList, delimiter) ) )
Wend
' Get the remaining element from the list
elementCount = elementCount + 1
Redim Preserve resultArray( elementCount ) As Variant
resultArray( elementCount ) = Trim$( stringList )
' Return the Array
StringToArray = resultArray( )
End Function
eknori
-
oder noch ein wenig kürzer mit
Function Split ( ImplodedStr$, StrDelimiter$) as variant
Split = Evaluate(|@Explode("| & ImplodedStr & |";"| & StrDelimiter & |")|)
End function
-
@eknori
Besten Dank! :D
Werde es mal probieren!
-
Hallo
darf ich mal dazwischenpfuschen. Du hast gesagt bei deinem Feld sind Mehrfachwerte zugelassen. Du könntest eigentlich gleich den Feldinhalt in einen Array schreiben.
Dim ws As New NotesUIWorkspace
Dim uidoc As NotesUIDocument
Dim inhalt As Variant
Set uidoc = ws.CurrentDocument
inhalt = uidoc.Document.GetItemValue("FELD")
Mit uidoc.Document wird auf das Backend zugegriffen. Die Methode GetItemValue gibt nicht wie FieldGetText einen String zurück, sondern den wirklichen Wert eines Feldes. Wenn es also ein Textfeld mit Mehrfachwerten ist, wird ein Stringarray zurückgegeben.
Zugreifen kannst du dann zB so:
For i = LBound(inhalt) To UBound(inhalt)
...
.... inhalt(i) ...
...
Next
Schönen Gruß
Manuel
-
@Manuell
Hast Recht. Habe zu kompliziert gedacht habe es jetzt so gelöst:
Set docO = source.Document
Forall x In docO.zustKundenNr
strKey = x
Set doc = view.GetDocumentByKey(strKey)
If doc Is Nothing Then
Messagebox "Anzeige nicht möglich"
Else
...........
............
End Forall
Hat mir sehr geholfen
Danke
Dirk