Das Notes Forum

Domino 9 und frühere Versionen => ND6: Entwicklung => Thema gestartet von: Sleigon am 12.03.08 - 14:09:35

Titel: Werte in einem Listenfeld ändern
Beitrag von: Sleigon am 12.03.08 - 14:09:35
Hallo

Ich habe ein Notes Dokument, welches mehrere Felder vom Typ "Text" mit der Option "Allow multiple values" enthält. Nun wollte ich die Daten in den Feldern ändern, was leider nicht
so richtig funktionieren will.

z.B.
Namen
Müller(0)
Meier(1)
Schulze(2)
Scholze(3)

das ganze soll per Script erfolgen

Zugreifen kann ich wunderbar auf die einzelnen Daten in den Feldern aber das Ändern bereitet noch Probleme.

Hatte es mit "ReplaceItemValue" versucht, da wurde dann aber immer nur der erste Wert geändert.

Call doc.ReplaceItemValue(Felder(xy), Neuerwert(6))

Ist es irgendwie möglich noch einen zweiten Wert bei "Felder(xy)" hinzuzufügen, welcher dann die Position im Feld enthält ?

"xy" steht für ein vorher festgelegtes Feld


mfg Sleigon
Titel: Re: Werte in einem Listenfeld ändern
Beitrag von: dirk_2909 am 12.03.08 - 14:23:33
hallo

wenn  Du in LS einen oder mehrer einzelne Werte eines Feldes ändern willst,
kannst Du die Methode "Replace" verwenden:

call doc.ReplaceItemValue( "FELDNAME" , Replace(doc.GetItemValue( "FELDNAME" ) , varOldVal , varNewVal ) )
Titel: Re: Werte in einem Listenfeld ändern
Beitrag von: Sleigon am 12.03.08 - 14:42:24
Danke für den Tip :)

Funktioniert wunderbar
Titel: Re: Werte in einem Listenfeld ändern
Beitrag von: Fineas am 12.03.08 - 16:39:05
Das Vorgehen mit Replace ist aber nicht frei von Risiken und Nebenwirkungen. Gerade bei Namen kann da schnell was schief gehen.

z.B.

Müller(0)
Heinze(1)
Heinzelmann(2)
Scholze(3)

Replace Heinze mit Schneider hätte zum Ergebnis:

Müller(0)
Schneider(1)
Schneiderlmann(2)
Scholze(3)

Wenn nicht gerade das beabsichtigt ist, wäre es besser das Feld in einen Variant packen, mit ArrayGetIndex die passende Stelle suchen, ersetzen, dann das Ganze wieder zurück. Fertig.

Gruß, Fineas!