Powerbuilder:如何为字段编写验证表达式

时间:2010-07-15 04:29:38

标签: powerbuilder datawindow

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

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

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

1 个答案:

答案 0 :(得分:3)

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

设计注意事项

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

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

我希望你会得到一些不同的回答,但我更喜欢只使用列规范表达式进行简单的检查,因为:

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

但是,我会批准dw表达式通常非常快。

使用计算字段验证规则

另一种替代技术也是快速执行者,可用于大多数PB版本。

  • 在数据窗口中有一个具有有意义名称的计算字段,例如cf_amount_rule,表达式为if (debit + credit = amount, 0, 1)
  • 如果您想要
  • ,则该字段对用户不可见
  • 在页脚中添加另一个计算字段以汇总cf_amount_rule,您现在有一个方便的参考点,可以在出现错误时快速告诉您
  • 在保存时间(或PFC用户的pfc_validation事件),您可以检查总和> 0并发布错误消息
OO纯粹主义者可能会建议将逻辑放入数据窗口是错误的,如果你发现自己在多个数据窗口中放入相同的规则,那肯定是代码味道。但是对于不太可能改变的简单规则,我一次又一次地发现数据窗口在运行这些规则方面非常有效,并且使您不必在其他地方编写大量代码。

可选好东西

  • 通过使用find()功能识别错误
  • 的特定行,可以使错误消息更加健壮
  • 通过引用cf_amount_rule的属性表达式更改行或字段的背景颜色,为用户提供有用的视觉提示。