#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