进度 - 连接表
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.
我在向数据库中记录之前添加了一些验证检查,我需要满足以下条件:
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.