我在向数据库创建记录之前添加了一些验证检查,我需要满足以下条件:
查找fieldinfo,其中fieldinfo.fieldno = 5052 找到codetable,其中codetable.tableno = fieldinfo.tableno和codetable.code = tt-employee.costcode
tt-employee是一个临时表,其余的都是直接来自db
由于我是新手,我有点困惑 - 应该使用联接,如果有的话,任何想法怎么做?谢谢!
答案 0 :(得分:2)
这里有一些事情需要考虑:
<强>验证强>
您可以在逻辑或数据库本身中添加验证。如何做到这取决于你和系统的外观。如果数据库中已经存在验证,则可能需要将其保留在那里。
但如果这不是您的客户/老板等的要求,我个人会将所有验证都放在业务逻辑中而不是架构中。
如果要使用数据库驱动的方法,请检查数据库手册中的“验证”。
<强>加入强>
另一个问题是您的查询错误。 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.
答案 1 :(得分:1)
尝试:
IF expression THEN {block/statement} [ELSE {block/statement}]
OR
IF expression THEN DO: {block} END. [ELSE DO: {block} END.]
看看,如果有帮助。