Почему я получаю "запись не в файле (138)" на progress4GL

Я пытаюсь проверить, существует ли запись, в противном случае я хочу создать ее.

Например,

у меня есть <table> это не имеет tab-code равно 2, так it is not availableтогда я делаю другое find просто "вызвать" таблицу для создания нового элемента, но по какой-то причине она не "вызывает" таблицу, и я получаю красивую стандартную ошибку: record <table> is not on file (138).

Я все еще новичок в прогрессе 4GL, поэтому, если это глупо, я приношу свои извинения.

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.

1 ответ

Решение
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 */
Другие вопросы по тегам