1

我有一个包含多个字段的数据窗口。我想为一个名为amount. 我还有另外两个名为debit和的字段credit。如果借方和贷方的总和大于金额,那么我想向用户显示一条验证消息。

如何在该数据窗口的列规范中编写所需的验证表达式?

我还想为名为test. 有一个名为 的字段criteria。当此字段设置为 1 时,我希望测试字段为必填字段。我该如何为此编写验证表达式?

4

1 回答 1

3

有不同的方法可以做到这一点,具体取决于您是必须使用列的必需验证表达式还是拥有许可以不同的方式执行此操作。

设计注意事项

这将是一个自由式数据窗口,您只需要为屏幕验证一次规则,还是一个表格样式,用户可以大量输入数据集并且需要将规则应用于每一行?

您是否希望在每次必填字段获得焦点时要求用户输入正确的值,或者您是否希望让他们自由浏览屏幕并在节省时间进行验证?

我希望您在这里会得到一些不同的响应,但我更喜欢仅将列规范表达式用于简单检查,因为:

  • 那里的复杂逻辑往往难以阅读和维护
  • 如果您要检查多个错误条件,如果您使用列规范的内置错误消息字段,则可能会导致一些笨拙的消息

但是,我承认 dw 表达式通常非常快。

将计算字段用于验证规则

一种替代技术的执行速度也很快,可以在大多数 PB 版本中使用。

  • 在数据窗口上有一个计算字段,该字段具有有意义的名称,例如cf_amount_rule表达式中的类似内容:if (debit + credit = amount, 0, 1)
  • 如果需要,使该字段对用户不可见
  • 在页脚中添加另一个计算字段来求和cf_amount_rule,您现在有一个方便的参考点,可以在出现错误时快速告诉您
  • 在保存时间(或 PFC 用户的 pfc_validation 事件),您可以检查 sum > 0 并发布错误消息

OO 纯粹主义者可能会建议将逻辑放入数据窗口是错误的,如果您发现自己在多个数据窗口中放入相同的规则,那肯定是代码异味。但是对于不太可能改变的简单规则,我一次又一次地发现数据窗口在运行这些规则方面非常有效,并且使您不必在其他地方编写大量代码。

可选的好东西

  • 您可以通过使用 find() 功能来识别具有错误的特定行,从而使错误消息更加可靠
  • 您可以通过引用cf_amount_rule.
于 2010-07-15T05:42:22.600 回答