1

ItemNumber値が入力されていることを確認する検証フォーラムがあるフィールドを持つフォームがあります。

ロータススクリプトでは、そのフォームを使用して新しいドキュメントを作成し、別の計算フィールドItemProductFamilyType(別のドキュメントのフィールドに基づいて計算)の値に応じて、データを入力したい場合がありItemNumberます。

私が抱えている問題は、ItemProductFamilyTypeまだ計算されていないため、値が空白であるということです。フィールドが更新されると値が設定され、ドキュメントが更新/再計算されます。

私はComputeWithFormこれに使用しようとしています(raiseErrorパラメーターは1または0です)が、他のフィールドの検証式のため、許可されていません。

では、検証式をチェック/エラーせずに計算フィールドを取得して値を更新するにはどうすればよいですか?

4

3 に答える 3

2

検証コントロール フィールドを追加してみてください。そこで、「runValidation」というフィールドを追加します。UI フォーム イベントの処理にのみ必要なため、表示用に計算されます。その式は簡単です

@ThisValue または runValidation

QueryRecalc イベントで、または ItemProductFamilyType の値を設定する場合はいつでも、値を「1」に設定します。

Sub Queryrecalc(Source As Notesuidocument, Continue As Variant)
    On Error Goto errHandle
    Dim doc As notesDocument
    Set doc = source.Document
    ' go populate your fields like ItemProductFamilyType
    doc.runValidation = "1"
    Exit Sub
errHandle:
    Messagebox Lsi_info(2) + " : " + Str(Err) + " - " + Error(Err) + ", at line " + Str(Erl)    
    Exit Sub 
End Sub

同じ考え方が ItemProductFamilyType の翻訳式でも機能します。

Field runValidation := "1";
@thisValue;

ItemNumber の検証式に「runValidation」フィールドを含めて、フィールドの検証時期を管理します。

@if(runValidation="1";@if(@trim(@ThisValue)="";@Failure("Enter value");@Success);@Success)

Source.Refreshデータの準備が整うまで、誤って検証ルールをトリガーすることなく、メソッドを安全に呼び出すことができるようになりました。

于 2011-10-05T23:13:17.923 に答える
2

これに対する Lotus Notes 固有の回避策があるかどうかはわかりませんが、どのシステムでも機能する 1 つのトリックは、検証式に別のテストを含めることです。とだけ言う代わりに、 の@If(FieldName != ""; @Failure; @Success)ように制御できる別の条件を追加します@If(DoValidation = "Yes" & FieldName != ""; @Failure; @Success)。その後、DoValidation 項目の値を制御することで、検証を制御できます。

ドキュメントを保存するときにのみ検証が開始されるように、条件に @IsDocBeingSaved を追加することがよくあります。

@If(@IsDocBeingSaved & FieldName != ""; @Failure; @Success)
于 2011-10-05T15:06:53.297 に答える
1

Another thought, given the potential that the ComputeWithForm method is unreliable: Why not check the value in the other document using LotusScript? In fact, you could call that same code from the QueryRecalc event and update the ItemProductFamilyType item, sparing you the need to duplicate code.

于 2011-10-05T17:45:04.210 に答える