打开边缘记录范围,用于每个和第一个

问题描述 投票:0回答:1

我有一个以前从未遇到过的令人困惑的问题。在生产环境中运行似乎没问题,但在独立的过程编辑器或 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.
scope transactions openedge
1个回答
0
投票

您的生产代码可能在 FOR EACH 之外的某个地方引用了 COMPANY。

要测试这个想法,请添加以下内容,而不是强作用域块:

FIND COMPANY where COMPANY.something = ? NO-LOCK NO-ERROR.
© www.soinside.com 2019 - 2024. All rights reserved.