Lotus Notes:比较两个字段

时间:2013-06-30 16:01:54

标签: lotus-notes lotus-domino lotusscript lotus-formula

我有两个对话框列表字段Cutt_StartCutt_End,这两个字段都有以下示例选项: 1
二月| 2
三月| 3
...
十二月| 12

现在,我想要发生的是,当您在Cutt_StartCutt_End上选择March时,它会提示错误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 个答案:

答案 0 :(得分:2)

如前所述,存储的字段值是管道的右侧值。但是:这些字段总是文本字段!!!!

要进行计算,您需要将文本转换为数字......

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

这将进入Cutt_end-字段的字段验证。

如果你需要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总是必须在一个月之后,那么只需将其更改为计算并写为值:

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

然后你不需要进行检查......

答案 1 :(得分:0)

管道字符右侧的数字是字段的值。管道左侧的名称是显示给用户的名称。

因此,如果您只是测试数字是连续的,并为12月到1月添加特殊情况(1来自12之后),那么您应该得到您正在寻找的结果。

请注意,数字值仍为文本格式,因此您需要先将其强制转换为数字

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

那就是说,如果Cutt_End必须始终在Cutt_Start之后的一个月,那为什么要有那个字段呢?只需计算该字段并让用户只选择开始月份。

答案 2 :(得分:0)

请检查以下内容并将您的代码放入onchange事件中。对于web和notes客户端,onchange功能行为是不同的。

enter image description here