Lotus Notes Domino API - генерирует ценность из формулы - PullRequest
1 голос
/ 30 сентября 2010

Вот сложный вопрос: у меня есть объект NotesForm, и я получил всю структуру, включая значения по умолчанию для полей, некоторые из которых являются формулами. Теперь я создаю несколько объектов NotesDocument для этой формы, используя код. Я понятия не имею о структуре NSF заранее - только во время выполнения, база данных может прийти откуда угодно. Это значит, что я тоже не знаю, что это за формула.

Теперь я хочу знать следующее: есть ли способ передать какой-либо текст формулы, который я прочитал, из значения по умолчанию (например, @Today) в Notes и получить результат для этой формулы? Затем я могу использовать это значение при создании моего документа. В настоящее время эти поля не заполнены, если они вполне могли иметь значение по умолчанию, если они были введены через клиент Notes.

Есть идеи?

1 Ответ

6 голосов
/ 30 сентября 2010

Вы можете использовать функцию / метод оценки.Если вы работаете с LotusScript в среде Notes / Domino, вы можете использовать что-то вроде этого:

Dim result As Variant
result = Evaluate(formulaString [,doc])

Объект NotesDocument, doc в приведенном выше фрагменте, является необязательным, но необходимым, если вы оцениваетеформула, которая использует данные из конкретного документа.Вам не нужно было бы использовать его для оценки @Today, но если ваша формула использует значение из другого поля, то вам нужно указать механизму языка формул, какой документ использовать (у него нет подсказки контекста, которую он имел бы вситуация «чистой формулы»).

Если вы используете COM или Java, оператор Evaluate не является частью языка, поэтому он рассматривается как метод объекта сеанса Notes.

Evaluate возвращает Variant изначально, обычно содержащий массив (он также может возвращать значение ошибки).В LotusScript используйте Variant и возьмите нулевой индекс, если ожидаете одно скалярное значение обратно.В VB classic или VBA это будет вариант.В .NET это объект;в Java это будет вектор.

...