Lotus notes 更新计算字段而不验证

Lotus notes 更新计算字段而不验证,lotus-notes,lotusscript,Lotus Notes,Lotusscript,我有一个表单,它有一个字段ItemNumber,该字段有一个用于确保输入值的验证forumla 在lotusscript中,我使用该表单创建了一个新文档,然后根据不同计算字段ItemProductFamilyType(基于另一个文档的字段计算)的值,我可能希望填充ItemNumber 我遇到的问题是,如果我查看ItemProductFamilyType的值,它是空的,因为它还没有计算出来。它只有在字段更新后才有一个值,然后它就是刷新/重新计算的文档 我正试图使用ComputeWithForm进行

我有一个表单,它有一个字段
ItemNumber
,该字段有一个用于确保输入值的验证forumla

在lotusscript中,我使用该表单创建了一个新文档,然后根据不同计算字段
ItemProductFamilyType
(基于另一个文档的字段计算)的值,我可能希望填充
ItemNumber

我遇到的问题是,如果我查看
ItemProductFamilyType
的值,它是空的,因为它还没有计算出来。它只有在字段更新后才有一个值,然后它就是刷新/重新计算的文档

我正试图使用
ComputeWithForm
进行此操作(参数
raiseError
为1或0),但是由于其他字段上的验证公式,它不允许我使用


因此,如何让计算字段在不检查/错误验证公式的情况下更新其值?

我不确定是否有特定于Lotus Notes的解决方法,但在任何系统中都可以使用的一个技巧是在验证公式中进行另一个测试。不要只说
@If(FieldName!=“”;@Failure;@Success)
,而是添加另一个可以控制的条件,如
@If(DoValidation=“Yes”&FieldName!=“”;@Failure;@Success)
。然后,您可以通过控制DoValidation项的值来控制验证

我经常将@IsDocBeingSaved添加到条件中,以便只有在保存文档时才会触发验证:

@If(@IsDocBeingSaved & FieldName != ""; @Failure; @Success)

我不确定是否有专门针对LotusNotes的解决方法,但在任何系统中都可以使用的一个技巧是在验证公式中进行另一个测试。不要只说
@If(FieldName!=“”;@Failure;@Success)
,而是添加另一个可以控制的条件,如
@If(DoValidation=“Yes”&FieldName!=“”;@Failure;@Success)
。然后,您可以通过控制DoValidation项的值来控制验证

我经常将@IsDocBeingSaved添加到条件中,以便只有在保存文档时才会触发验证:

@If(@IsDocBeingSaved & FieldName != ""; @Failure; @Success)

另一个想法是,考虑到
ComputeWithForm
方法可能不可靠:为什么不使用LotusScript检查其他文档中的值?事实上,您可以从QueryRecalc事件调用相同的代码,并更新
ItemProductFamilyType
项,从而避免重复代码。

另一种想法是,考虑到
ComputeWithForm
方法可能不可靠:为什么不使用LotusScript检查其他文档中的值?事实上,您可以从QueryRecalc事件调用相同的代码,并更新
ItemProductFamilyType
项,从而避免重复代码。

尝试添加验证控制字段。因此,添加一个名为“runValidation”的字段。它是为显示而计算的,因为它仅用于处理UI表单事件。它的公式是直截了当的

@此值或运行验证

在QueryRecalc事件中,或当您想要设置ItemProductFamilyType的值时,将其设置为“1”

同样的想法也适用于ItemProductFamilyType的翻译公式

Field runValidation := "1";
@thisValue;
在ItemNumber的验证公式中,包括“runValidation”字段,以管理该字段何时应进行验证

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

您现在应该能够安全地调用
源.Refresh
方法,而不会在数据准备就绪之前意外触发验证规则。

尝试添加验证控制字段。因此,添加一个名为“runValidation”的字段。它是为显示而计算的,因为它仅用于处理UI表单事件。它的公式是直截了当的

@此值或运行验证

在QueryRecalc事件中,或当您想要设置ItemProductFamilyType的值时,将其设置为“1”

同样的想法也适用于ItemProductFamilyType的翻译公式

Field runValidation := "1";
@thisValue;
在ItemNumber的验证公式中,包括“runValidation”字段,以管理该字段何时应进行验证

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

现在,您应该能够安全地调用
源。刷新
方法,而不会在数据准备就绪之前意外触发验证规则。

小心使用ComputeWithForm(来自帮助)“通过执行文档表单中定义的默认值、翻译和验证公式(如果有)来验证文档。”但是你所尝试的应该是有效的。你说“不让我”是什么意思,错误是什么?只是澄清一下,帮助中没有提到任何计算字段,我一直理解它不能保证它们会计算。它不会更新计算字段。嗯,这是真的,根据我的经验,它们会更新,但可能我只是依赖于一个副作用。在这种情况下,我的问题是,如何更新lotusscript中的计算字段?请注意ComputeWithForm(来自帮助)“通过执行文档表单中定义的默认值、翻译和验证公式来验证文档。”但是您尝试的应该是可行的。你说“不让我”是什么意思,错误是什么?只是澄清一下,帮助中没有提到任何计算字段,我一直理解它不能保证它们会计算。它不会更新计算字段。嗯,这是真的,根据我的经验,它们会更新,但可能我只是依赖于一个副作用。在这种情况下,我的问题是,如何更新lotusscript中的计算字段?