是的,在尝试保存任何数据窗口之前确保启动dw.accepttext()
是一个非常好的主意。否则,就像你指出的那样,它可能不会保存用户输入的所有信息,除非他们从每个字段中删除;最终用户不应期望这样做。
对于更复杂的窗口/对象,您可以为此创建一个简单功能,例如wf_accepttext()
,其中包含需要更新的每个数据窗口的所有dw.accepttext()
调用。然后,您可以在尝试更新数据窗口之前调用该函数。
(编辑)更多的想法:以上
特里的评论让我想起的东西,我忽略了我最初的答案,包括。如果字段的验证失败,accepttext()
返回-1
。 因此,如果您使用自定义函数来处理所有accepttext()
调用,请确保编写它来处理此返回代码。一些诸如这应该是足够了:
/* wf_accepttext() */
if dw_foo.accepttext() = -1 then return false
if dw_bar.accepttext() = -1 then return false
// etc..
return true
这样,在你保存功能的顶部,让我们把它wf_save()
,你可以这样做:
/* wf_save() */
if not wf_accepttext() then return false
/* any other save validation and the dw.update() goes below here */
而且在事件的东西没有按不验证,wf_save()
将保释,并且您的itemchanged
事件应该有代码来处理其余的问题。
你能澄清为什么“最后一个字段没有正确接受输入值”,为什么你认为这是一件坏事?如果它没有通过一定程度的验证,那么它会失败,然后才会失败。 – Terry 2010-10-28 02:57:52
@Terry:因为在最后一个字段中输入了一些值之后,我点击了OK按钮,因此accepttext没有被触发。 – 2010-10-28 06:16:16