进度 - 连接表

Progress - Join Tables

我在向数据库中记录之前添加了一些验证检查,我需要满足以下条件:

Find fieldinfo where fieldinfo.fieldno = 5052 Find codetable where codetable.tableno = fieldinfo.tableno and codetable.code = tt-employee.costcode

tt-employee 是临时工 table ,其余直接来自 db

由于我是 progress 的新手,所以我有点困惑 - 应该为此使用连接,如果可以,知道怎么做吗?谢谢!

尝试:

IF  expression  THEN   {block/statement}    [ELSE   {block/statement}]

IF  expression  THEN DO:   {block}   END.   [ELSE DO:   {block}   END.]

看看有没有帮助。

这里有一些事情需要考虑:

验证

您可以在您的逻辑或数据库本身中添加验证。如何操作取决于您和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在那里。

但如果这不是您的 client/boss 等的要求,我个人会把所有验证都放在业务逻辑中,而不是模式中。

如果您想使用数据库驱动方法,请查看 "validation" 的数据库手册。

加入

另一个问题是您的查询有误。 Progress 确实支持连接查询,但不支持 FIND 语句。

这样做而不是保留 FIND:

FIND fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052 NO-ERROR.
IF AVAILABLE fieldinfo THEN DO:
  FIND FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                                 AND codetable.code    = tt-employee.costcode NO-ERROR.
  IF AVAILABLE codetable THEN DO:
    /* Do something */
  END.
END.

您也可以将其更改为带有连接的 FOR 语句。

FOR EACH fieldinfo NO-LOCK WHERE fieldinfo.fieldno = 5052, 
  FIRST codetable NO-LOCK WHERE codetable.tableno = fieldinfo.tableno 
                           AND codetable.code    = tt-employee.costcode:
  /* Do something */
END.