Consultor Eletrônico



Kbase P88225: Errors (438) and (49) when running an Application that retrieves records with NO-LOCK
Autor   Progress Software Corporation - Progress
Acesso   Público
Publicação   16/10/2008
Status: Verified

SYMPTOM(s):

Errors (438) and (49) when running an Application

Record being retrieved with NO-LOCK

Attempting to refetch a record by RECID

Client attempting to access recid <record-number> not part of file <file-number>. (438)

SYSTEM ERROR: Memory violation. (49)

CAUSE:

RECID being reused points to a different record in a different table. First user retrieves the record and save its recid, then a second user deletes that record and a new record is created in another table with the same RECID. First user tries to retrieve the old record again, but now that RECID points to a different record

FIX:

Follow these steps to avoid the occurrence of this issue:

1- Find out the name of the table the RECID currently belongs to by running a query like this:

FOR EACH _file WHERE _file._file-number = <file-number>

2- Modify the code of the program that the first Application user was running so that it reads/retrieves the record with a SHARE-LOCK instead of a NO-LOCK. By using a SHARE-LOCK, the first user will prevent the record from being deleted by the second user