更新计算字段而不验证
我有一个表单字段ItemNumber
,它有一个验证论坛,可确保输入值。更新计算字段而不验证
在lotusscript中,我使用该表单创建一个新文档,然后根据不同计算字段的值ItemProductFamilyType
(根据另一个doc的字段计算)我可能需要填充ItemNumber
。
我的问题是,如果我看看ItemProductFamilyType
的值,它是空白的,因为它还没有被计算出来。一旦一个字段被更新,它只会有一个值,然后是刷新/重新计算的文档。
我想为此使用ComputeWithForm
(raiseError
参数为1或0),但是由于其他字段上的验证公式,它不会让我。
那么,我怎样才能得到计算字段来更新他们的价值没有检查/错误验证公式?
尝试添加验证控制字段。所以,添加一个名为“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
没有无意中触发验证规则,直到数据已准备就绪。
我不确定是否有针对此Lotus Notes特定的解决方法,但是在任何系统中工作的一个技巧是在验证公式中进行另一个测试。不要只说@If(FieldName != ""; @Failure; @Success)
,而要添加另一个可以控制的条件,如@If(DoValidation = "Yes" & FieldName != ""; @Failure; @Success)
。然后,您可以通过控制DoValidation项目的值来控制验证。
我经常补充@IsDocBeingSaved的条件,这样的验证,只有当要保存的文件大火:
@If(@IsDocBeingSaved & FieldName != ""; @Failure; @Success)
另一种认为,鉴于ComputeWithForm
方法是不可靠的潜力:为什么不检查的价值另一个文档使用LotusScript?实际上,您可以从QueryRecalc事件中调用相同的代码并更新ItemProductFamilyType
项目,从而不必复制代码。
请注意ComputeWithForm(来自帮助)“通过执行默认值,翻译和验证公式(如果在文档表单中定义)验证文档。”但是你尝试应该工作。 “不让我”是什么意思,错误是什么? –
只是为了澄清,帮助没有提及任何计算字段,我总是明白它不能保证他们会计算。 –
它不会更新计算的字段。 –