为什么在执行查找后创建时会出现错误 138?

Why do i get error 138 when doing a find followed by a create?

我有以下代码块,当 运行 出现错误 138 并且创建实际上失败了。任何帮助将不胜感激。

FIND PSESCDel EXCLUSIVE-LOCK
             WHERE PSESCDel.EmployeeCode    = PSESC.EmployeeCode
               AND PSESCDel.ServiceCoverRef = PSESC.ServiceCoverRef NO-ERROR.


        IF NOT AVAILABLE PSESCDel THEN
        DO:
            IF PSESC.EmployeeCode = "0358" THEN
                    MESSAGE "RM NOT AV" PSESC.ServiceCoverRef.

            CREATE PSESCDel.
            ASSIGN PSESCDel.EmployeeCode    = PSESC.EmployeeCode
                   PSESCDel.ServiceCoverRef = PSESC.ServiceCoverRef
                   PSESCDel.DeletedDate     = TODAY.

            IF PSESC.EmployeeCode = "0350" THEN
            DO:
                    MESSAGE "RM IT CAME TO CREATE".
                    IF ERROR-STATUS:ERROR OR ERROR-STATUS:NUM-MESSAGES > 0 THEN DO:
                            MESSAGE "RM ERROR NUMBER" STRING(ERROR-STATUS:GET-NUMBER(1)).
                            MESSAGE "RM ERROR MESSAGE" ERROR-STATUS:GET-MESSAGE(1).
                    END.
            END.



        END.

错误 138 的描述是:"The record you were looking for does not exist or cannot pass the selection given by your combination of WHERE, OF, and USING phrases."数据库中不存在与 FIND 语句中的 EmployeeCode 和 ServiceCoverRef 相匹配的记录。

我猜您在代码段底部的 "RM ERROR NUMBER" 消息中看到了这一点。 Progress 产生的错误被 FIND 语句中的 NO-ERROR 短语抑制了。您可能希望显示 PSESC 记录中的这两个值,并确保它们符合您的预期。