project BLF > class Persistence (Progress) > method RecordIsLocked

function returns logical

Description

returns true if a record in the database (identified by a rowid) is locked by another process


Parameters


icTableNameinputcharacterdatabase table name
icRecordRowidinputcharacter


Internal usage


QadFinancials
method BBalanceDaemonQueue.CreateBalanceDaemonQueue
method BCubeDaemonQueue.CreateFRWCubeDaemonQueue
method BHistoryDaemonQueue.CreateHistoryDaemonQueue


program code (program1/progress.p)

/* Use existing buffer if possible */
find first tQbuffers where
           tQbuffers.tcTable = icTableName + "1" and
           tQbuffers.tiIsInUseBy = 0 and
           tQbuffers.tlActive = yes no-error.
if available tQbuffers
then do:
    viBufferID = ?.
    viBufferID = tQbuffers.thBuffer:unique-id no-error.
    if viBufferID <> tQbuffers.tiBufferID
    then delete tQbuffers.
end.
if available tQbuffers
then do transaction:
    vgQBufferUsage = vgQBufferUsage + 1.
    tQbuffers.tgUsage = vgQBufferUsage.
    tQbuffers.thBuffer:find-by-rowid (to-rowid(icRecordRowid), exclusive-lock, no-wait).
    vlIsLocked = tQbuffers.thBuffer:locked.
    tQbuffers.thBuffer:buffer-release().
end.
else do:
    create buffer vhLocalBuffer for table icTableName in widget-pool "non-persistent" no-error.
    if valid-handle(vhLocalBuffer)
    then do transaction:
        vhLocalBuffer:find-by-rowid (to-rowid(icRecordRowid), exclusive-lock, no-wait).
        vlIsLocked = vhLocalBuffer:locked.
        vhLocalBuffer:buffer-release().
        delete object vhLocalBuffer.
    end.
end.

return vlIsLocked.