Das Notes Forum
Domino 9 und frühere Versionen => ND9: Entwicklung => Thema gestartet von: tfrenz am 14.01.14 - 15:15:58
-
Gibt es eine Möglichkeit in Lotusscript durchnummerierte Variablen in einer For-Schleife abzufragen?
habe z.B. Variablen Name1, Name2, Name3, ... Name10
Nun möchte z.B. so abfragen:
For x = 0 To 10
If name+x = "" Then
Print "Name " + CStr(x) + " leer"
End If
Next
Ich muss dann das ganze nicht 10x Schreiben.
Danke Thomas
-
Warum verwendest Du kein Array oder keine List Variable?
Bernhard
-
Man kann den (recht simplen) Check auch in eine eigene Function auslagern.
Ich finde aber die Variante mit List bzw. Array aber wohl am geschicktesten.
-
Hallo Bernhard,
ja das würde schon gehen, aber ich möchte dann noch in der DB die entsprechenden Felder die auch Durchnummeriert sind ggf. befüllen.
Thomas
-
Das kannst du ja mit einem Array genauso machen.
-
Das würde für die List-Variante, die eher wie eine Java-Map als eine Liste ist, sprechen.
List-Key = Itemname im Dokument und Schwupp kannst du die Sachen relativ bequem rüberschaufeln, wenn List-Key und Itemname übereinstimmen sollten. Oder du hast eine Chance von dem List-Key auf den Itemnamen "umzurechnen".
Array ginge natürlich auch.
-
Wenn Du über Felder mit einem Laufsuffix iterieren willst, dann nutze
notesDocument.GetItemValue("Feldname" & cstr(i))
wobei i dann die Laufvariable in einer Schleife ist.
Andreas
-
Und wie befüllst Du Deine Scriptvariablen? Wenn Du dort keine Liste oder ähnliches nimmst, schreibst Du an der Stelle ja auch schon alles mehrfach.
name1 = doc.Name1 (0)
name2 = doc.Name2 (0)
So solltest Du es besser nicht machen ...
Falls es überhaupt notwendig ist, die Variablen in Script vorzuhalten, wäre das mit einer Liste sehr elegant
Dim felder List As String
For x = 0 To 10
felder ("name" & x) = doc.GetItemValue ("name" & x) (0)
Next x
Deine Print-Routine sieht dann so aus
Forall feld In felder
If feld = "" Then
Print Listtag (feld) & " leer"
End If
End If
Aus der Liste heraus füllst Du später ganz simpel die Felder des Dokuments
Forall feld in felder
Call doc.ReplaceItemValue (Listtag (feld), feld)
End Forall
-
Danke.
hat mit der List super funktioniert.