为什么我在进度 4GL 上得到 "record not on file (138)"

Why am I getting "record not on file (138)" on progress4GL

我正在尝试检查记录是否存在,否则我想创建它。

例如

我有一个 <table> 没有 tab-code 等于 2,所以 it is not available,然后我再做一个 find只是为了 "call" table 创建一个新项目,但由于某种原因它没有 "call" table 我得到一个漂亮的标准错误:record <table> is not on file (138).

我对 progress4GL 还是个新手,所以如果它很愚蠢,我深表歉意。

find <table> where tab-code = 2.

if not avail <table>
then do:

    find last <table> no-lock no-error.

    create <table>.
    assign <table>.tab-code = 2.

end.
find <table> where tab-code = 2 NO-ERROR.

在查找记录时始终使用 NO-LOCK NO-ERROR。如果不使用 NO-ERROR 那么它会在编译后给出错误(意味着如果记录不可用)。

FIND FIRST <table> NO-LOCK WHERE <table.id>  = 2 NO-ERROR.

IF NOT AVAILABLE <table> THEN DO:
   CREATE <table>.
   ASSIGN <table>.<table_id> = 2 NO-ERROR.
END.
 /*always use FIND FIRST to get record from the particular table. FIND case will fail some time */