Domino 9 und frühere Versionen > ND6: Entwicklung
Agenten für Listen
Thomas Schulte:
Warum willst du eigentlich partout mit dem Strtoken hantieren? Les doch erst einmal alle Antworten bevor du weiterfragst.
Aber gut
1. was hat varlist denn für einen Wert?
2. Ein Stringtoken geht ausschließlich mit einem String. Ich wette mit dir das der Debugger wenn du überhaupt einen Wert für varlist hast den mit varlist(0) anzeigt.
bikerboy:
@Thomas Schulte
Also varList ist als Variant deklariert und enthält die "Liste" mit den verschiedenen Strings die ich zu einem Document auseindanderflicke. Also nochmal, damit ich nicht Missverstanden werde.
in varList steht ziemlich genau das drin :
"Robert Kreutzer~27.10.2006 11:00:40~Ausgangsrechnung~monatlich~60000~Nein~unbefristet~"
"Robert Kreutzer~27.11.2006 11:00:40~Ausgangsrechnung~monatlich~60000~Nein~unbefristet~"
"Robert Kreutzer~27.12.2006 11:00:40~Ausgangsrechnung~monatlich~60000~Nein~unbefristet~"
(alles fiktive Werte. nicht dass sich einer Hoffnung macht ;) )
und das jetzt soll jede Zeile ein Document ergeben
flaite:
varlist scheint vom Typ variable-length-Array zu sein und nicht vom Lotus-Script Datentyp List.
In LotusScript gibts wirklich nicht soooo viele Datentypen. Deshalb kann man ruhig so vorsichtig mit unserem natursprachlichen Deutsch umgehen, dass man Irreführungen vermeidet. Unter List verstehe ich in LotusScript einen Datentyp der eine bestimmte Containerstruktur abbildet (eigentlich ein tree btw. dh. lotus nennt einen tree eine list. auch nicht besser). Aber egal.
An die einzelnen Elemente des Arrays kommst du am schnellsten über eine forall - Schleife ran.
--- Code: ---forall x in dasWasDuListNennst
print x
' x über split weiterverarbeiten (s.u.)
End ForAll
--- Ende Code ---
Die einzelnen Elemente des Array zerschnippelst du am besten über die split-Funktion von LotusScript:
hier aus der Hilfe von Notes:
--- Code: ---Sub Initialize
Dim ret As Variant
dim teststr as string
Dim delim As String
teststr = "This is the Connection"
delim = " "
ret = split(teststr, delim)
For x = 0 to 3
Print ret(x)
Next
End Sub
--- Ende Code ---
Als delim nimmst du natürlich ~
bikerboy:
So an alle Kritiker, ich habe es. Noch keine Fehlerabfangung aber ich das kommt nun nachdem es funzt. hier der code
--- Code: ---Function newDocument
Dim i As Integer
Dim personName As String
Dim payableDate As String
Dim kindofCost As String
Dim repeat As String
Dim amount As String
Dim once As String
Dim lifetime As String
Dim del1 As String
Dim wert As Integer
Dim value As String
wert = Ubound(varList)
del1 = "~"
For i = 0 To wert
Set docNew = db.CreateDocument
value = varList(i)
docNew.personName = Strtoken(value, del1, 1)
docNew.payableDate = Strtoken(value, del1, 2)
docNew.kindofCost = Strtoken(value, del1, 3)
docNew.repeat = Strtoken(value, del1, 4)
docNew.amount = Strtoken(value, del1, 5)
docNew.once = Strtoken(value, del1, 6)
docNew.lifetime = Strtoken(value, del1, 7)
docNew.Form = "Agent"
Call docNew.Save(True,False)
Next
End Function
--- Ende Code ---
ata:
... noch ein kleiner Tip zur Performance:
--- Code: ---Set doc = collection.GetNThDocument(i)
--- Ende Code ---
... ist nicht gut für die Performance, wenn du viele Dokumente zum abarbeiten hast. Er wird um so langsamer, je mehr Dokumente du in der Collection hast...
--- Code: ---Set doc = collection.GetFirstDocument
While Not doc Is Nothing
' # deine Anweisungen
Set doc = collection.GetNextDocument( doc )
Wend
--- Ende Code ---
... ist in diesem Fall die bessere Variante - bevor du dir diesen Weg standardisierst... ;-)
Toni
Navigation
[0] Themen-Index
[#] Nächste Seite
[*] Vorherige Sete
Zur normalen Ansicht wechseln