Domino 9 und frühere Versionen > ND6: Entwicklung

Agenten für Listen

<< < (4/5) > >>

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