Обновите элемент списка с помощью формулы Lotus

#lotus-notes #lotus-formula

Вопрос:

Я пытаюсь обновить элемент в списке с помощью формулы Lotus.

Я думал, ты сделаешь это вот так:

 x := "0":"0":"0";
x[1] := "1";
 

Но когда я пытаюсь сохранить, я получаю следующую ошибку:

 := must be immediately preceded by a field or variable name
 

Ответ №1:

Из справки Lotus Domino Designer 7:

Оператор индекса не может использоваться в левой части инструкции присваивания. То есть вы не можете присвоить значение подписанному элементу. Вы должны составить полный список, а затем назначить его. Например, если Категории-это список из 3 элементов, и вы хотите присвоить новое значение элементу 2:

 FIELD Categories := Categories[1] : "CatNew" : Categories[3]
 

Обычно вы можете получить это с помощью @Implode, @Explode или @Replace. Но если вам это действительно нужно, вы можете сделать это:

 REM {FieldName[Index] := NewVal};
Index := 2;
NewVal := "CatNew";

maxIndex := @Elements(FieldName);
PrePart := @If(Index > 1; @Subset(FieldName; Index-1); "");
PostPart := @If(Index < maxIndex; @Subset(FieldName; (Index-maxIndex)); "");

Field FieldName := PrePart : NewVal : PostPart
 

Комментарии:

1. Я улучшил формулу, чтобы избежать потенциальной ошибки, когда Индекс=1 или Индекс=maxIndex