0

2 つの dialoglist フィールドCutt_StartとがありCutt_End、両方のフィールドに次の選択肢があります。2月1
日 | 3月2
日 | 3
...
12月 | 12

ここで、私が実現したいのは、 で 1 月Cutt_Startと で 3 月を選択するとCutt_EndMonth2 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 を常に 1 か月後にする必要がある場合は、単純に計算済みに変更し、値として書き込みます。

@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 に答える