我有一个以前从未遇到过的令人困惑的问题。在生产环境中运行似乎没问题,但在独立的过程编辑器或 mpro 会话中它失败了,所以我想了解为什么..
FOR EACH employee NO-LOCK BREAK BY employee.company:
IF FIRST-OF(employee.company) THEN
DO:
FIND company WHERE company.company = employee.company NO-LOCK NO-ERROR.
END.
MESSAGE FIRST-OF(employee.company) SKIP
AVAILABLE company
VIEW-AS ALERT-BOX.
END.
我期望提供公司记录存在,对于该公司的每个员工记录,我都会看到该公司记录可用,但事实并非如此,一旦我们第二次出现该公司,它就不再可用。
我可以使用强作用域使其工作,如下所示,但我想知道是否存在某种启动参数或我缺少的东西,如上所述,这在其生产环境中运行良好程序。我应该补充一点,生产环境中的代码位于标准 .p.
中的过程中DO FOR employee, company:
FOR EACH employee NO-LOCK BREAK BY employee.company:
IF FIRST-OF(employee.company) THEN
DO:
FIND company WHERE company.company = employee.company NO-LOCK NO-ERROR.
END.
MESSAGE FIRST-OF(employee.company) SKIP
AVAILABLE company
VIEW-AS ALERT-BOX.
END.
END.
您的生产代码可能在 FOR EACH 之外的某个地方引用了 COMPANY。
要测试这个想法,请添加以下内容,而不是强作用域块:
FIND COMPANY where COMPANY.something = ? NO-LOCK NO-ERROR.