Bha*_*rat 2 progress-4gl openedge
我是 4GL 的新手。我总是愿意编写正确的代码,并愿意了解我们正在使用的每个关键字的两端,但遵循给出相同结果的示例查询。我不知道什么时候使用FIND FIRST、FOR FIRST和CAN-FIND?请帮助我重写完美的答案
FOR EACH Customer NO-LOCK:
FOR FIRST Order OF Customer:
/*somelogic*/
END.
END.
FOR EACH Customer NO-LOCK:
FIND FIRST Order OF Customer NO-LOCK NO-ERROR.
IF AVAILABLE Order THEN
/*somelogic*/
END.
FOR EACH Customer NO-LOCK:
IF CAN-FIND(FIRST Order OF Customer ) THEN
DO:
/*somelogic*/
END.
END.
Run Code Online (Sandbox Code Playgroud)
小智 5
FOR FIRST 将您找到的记录范围限定为一个块。它避免了在块中引用记录时必须检查记录的可用性,因为如果记录不可用,则块将不会执行。
永远不应该真正使用 FIND FIRST。如果有很多记录,您无法控制第一个找到哪条记录;如果只有一个记录,您应该只使用 FIND 而无需使用 FIRST。这样,代码就可以解释预期的内容,并且您可以测试是否存在模糊性,以确保有人没有做一些愚蠢的事情。
CAN-FIND 用于检查记录是否存在,而不实际将该记录拉回客户端。缓冲区中将没有可用记录,因此您无法使用该数据。这是检查记录是否存在的绝佳方法,而无需通过网络将内容拉回。如果您不关心数据,请使用它。