0

我有两个对话框列表字段Cutt_Start,并且Cutt_End两个字段都有以下示例选择:一月 | 2 月1
日 | 3 月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

你能帮助我吗?

4

3 回答 3

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))

那你就不需要检查了...

于 2013-06-30T17:38:18.357 回答
0

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

在此处输入图像描述

于 2013-07-01T03:53:10.447 回答
0

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

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

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

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

也就是说,如果 Cutt_End 必须总是在 Cutt_Start 之后 1 个月,那为什么还要有那个字段呢?只需计算该字段并使用户只需选择开始月份即可。

于 2013-06-30T16:41:53.057 回答