Почему я получаю "запись не в файле (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 ответ
Решение
Всегда используйте 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 */