Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Wilhelm Weber am 17.02.09 - 12:27:28

Titel: Problem mit Lotus Script
Beitrag von: Wilhelm Weber am 17.02.09 - 12:27:28
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
Titel: Re: Problem mit Lotus Script
Beitrag von: koehlerbv am 17.02.09 - 12:32:37
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
Titel: Re: Problem mit Lotus Script
Beitrag von: Wilhelm Weber am 17.02.09 - 12:49:50
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?
Titel: Re: Problem mit Lotus Script
Beitrag von: Felix Ziegler am 17.02.09 - 13:20:34
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
Titel: Re: Problem mit Lotus Script
Beitrag von: Wilhelm Weber am 17.02.09 - 13:54:40
so hab ich es gemacht, es bleibt der Wert "" für x und damit wir der Wert nicht gesetzt..
Titel: Re: Problem mit Lotus Script
Beitrag von: Felix Ziegler am 17.02.09 - 13:55:57
Sorry... lass mal das "Set" weg..

Code
         li = doc.GetItemValue("n" &Cstr(j))
         Forall x In li
Titel: Re: Problem mit Lotus Script
Beitrag von: Wilhelm Weber am 17.02.09 - 13:58:55
den Typ hatte ich schon von Bernhard, ist also schon weg.

Beim Debuggen sthen in li auch zwei Werte drin, wenn es dann zur For Schleife kommt, ist x =""
Titel: Re: Problem mit Lotus Script
Beitrag von: m3 am 17.02.09 - 14:00:44
Wieso schreibst Du "doc.li" ?
li ist doch ein Variant und kein Attribut des Document-Objektes.
Da ist es kein Wunder, dass x dann leer ist.
Titel: Re: Problem mit Lotus Script
Beitrag von: Wilhelm Weber am 17.02.09 - 14:03:35
wollte gerade posten, dass es klappt...
das doc.li ist wirklich unsinn !!

Danke !
Titel: Re: Problem mit Lotus Script
Beitrag von: Felix Ziegler am 17.02.09 - 14:07:24
Hatte ich ja gepostet :) Nur das Set habe ich vergessen zu entfernen. Aber da hätte dir der Compiler aber schon eins auf die Finger geben müssen...

Zitat
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