Lotus Notes: сравнение двух полей

У меня есть два поля диалогового списка Cutt_Start а также Cutt_Endоба поля имеют пример выбора: январь | 1
Февраль | 2
Март | 3
...
Декабрь | 12

Теперь я хочу, чтобы при выборе января на Cutt_Startи март на Cutt_End, это должно вызвать ошибку, Month2 should be next to Month1, Я попробовал этот код, но ничего не происходит.

If Cutt_Start = "January" & Cutt_End <> "February" Then
    Msgbox "Month2 should be next to Month1"
Else
    Msgbox "January to February selected"
End If

Вы можете мне помочь?

3 ответа

Как уже упоминалось, сохраненные значения полей являются правыми от трубы. НО: такие поля всегда являются текстовыми полями!!!!

Чтобы сделать вычисление, вам нужно преобразовать текст в числа...

_start := @TextToNumber( Cutt_Start );
_end := @TextToNumber( Cutt_End );
_res := _end - @Modulo(_start; 12)
@If( !@IsError(_res) &_res != 1; @Failure( "your message" ); @Success) 

Это входит в валидацию поля Cutt_end- field.

Если вам нужен LotusScript (чтобы он был в QuerySave или OnChange-Event поля, то код будет:

Option declare
Dim ws as New NotosUiWorkspace
Dim doc as NotesDocument
Set doc = ws.CurrentDocument.Document
If Cint(doc.Cutt_End) - CInt(doc.Cutt_Start) <> 1 then
    messagebox "your Message"
End if

Этот код НЕ содержит обработчика ошибок.

И, как упоминалось в других комментариях: это точно не правильный способ сделать это. Если cut_end всегда должен быть на месяц позже, просто измените его на computed и напишите в качестве значения:

@If(Cutt_Start = ""; ""; @Text(@Modulo(@TextToNumber( Cutt_Start ); 12) + 1))

Тогда вам не нужно будет делать чек...

Пожалуйста, проверьте следующее и вставьте свой код в событие onchange. Для веб-клиента и клиента заметок поведение функции onchange различно.

Число справа от символа канала - это значение поля. Имя слева от канала - это то, что отображается пользователю.

Так что если вы просто проверяете, что числа последовательные, и добавляете специальный случай для декабря к январю (1 идет после 12), то вы должны получить результат, который вы ищете.

Обратите внимание, что числовое значение все еще находится в текстовом формате, поэтому вам нужно сначала привести его к числовому значению.

If Cutt_End - Cutt_Start <> 1 Then Msgbox "Error!"

Тем не менее, если Cutt_End всегда должен быть через 1 месяц после Cutt_Start, то зачем вообще это поле? Просто рассчитайте это поле и сделайте так, чтобы пользователь просто выбрал начальный месяц.

Другие вопросы по тегам