Domino 9 und frühere Versionen > ND6: Entwicklung
Problem mit Lotus Script
Wilhelm Weber:
hallo zusammen,
das Problem in der kalenderansicht ist gelöst, es gibt jetzt noch eine letzte Wand gegen die ich momentan laufe..
Ich habe verschiedene Felder ( n1 bis nx) in denen Mehrfachwerte stehen.
Jetzt will ich diese Felder der Reihe nach durchlaufen und für jeden Wert , der enthalten ist ein neues Dokument erzeugen. Wenn ich nur das erste Feld n1 nehme, klappt alles wie es soll mit der Forall - Schleife.
Sobald ich die n Felder auslesen will ( set li = ...) kommt der Type Mismatch.
Habe mir die Hilfe angeschaut, komme aber nicht weiter.
Hier der Auszug aus dem Code:
Dim j As Integer
Dim li as variant
For j = 1 To 2
If doc.GetItemValue("dienstart" &Cstr(j))(0) <> "" Then
Set li = doc.GetItemValue("n" &Cstr(j))(0)
Forall x In doc.li
Set newdoc1 =New NotesDocument (db)
newdoc1.form = "XXX"
Call newdoc1.ReplaceItemValue("n"&Cstr(j), x)
s0 = doc.GetItemValue("d" &Cstr(j))(0)
Call newdoc1.ReplaceItemValue("d"&Cstr(j) , s0)
newdoc1.m = doc.m
newdoc1.b = doc.b
s1 = doc.GetItemValue("u" &Cstr(j))(0)
Call newdoc1.ReplaceItemValue("u"&Cstr(j) , s1)
Call newdoc1.ComputeWithForm(True, False)
Call newdoc1.save(True,False)
End Forall
End If
Next
koehlerbv:
Das Set ist falsch. Li wird mit dem Inhalt des Items ein Array und kein Objekt.
doc.li wäre ein Item - was soll das werden?
Bernhard
Wilhelm Weber:
okay, der type missmatch ist jetzt weg, aber es wird nur der erste Wert des feldes eingelesen (0).
Wenn ich die (0) weglasse, habe ich in li mehrere Werte drin.
Aber in der Forall Schleife steht beim Debugging für x ein "", die Werte werden also nicht übernommen?
Felix Ziegler:
probiers mal so...
--- Code: ---Dim j As Integer
Dim li as variant
For j = 1 To 2
If doc.GetItemValue("dienstart" &Cstr(j))(0) <> "" Then
Set li = doc.GetItemValue("n" &Cstr(j))
Forall x In li
Set newdoc1 =New NotesDocument (db)
newdoc1.form = "XXX"
Call newdoc1.ReplaceItemValue("n"&Cstr(j), x)
s0 = doc.GetItemValue("d" &Cstr(j))(0)
Call newdoc1.ReplaceItemValue("d"&Cstr(j) , s0)
newdoc1.m = doc.m
newdoc1.b = doc.b
s1 = doc.GetItemValue("u" &Cstr(j))(0)
Call newdoc1.ReplaceItemValue("u"&Cstr(j) , s1)
Call newdoc1.ComputeWithForm(True, False)
Call newdoc1.save(True,False)
End Forall
End If
Next
--- Ende Code ---
Wilhelm Weber:
so hab ich es gemacht, es bleibt der Wert "" für x und damit wir der Wert nicht gesetzt..
Navigation
[0] Themen-Index
[#] Nächste Seite
Zur normalen Ansicht wechseln