Description
Mark a database object as no longer in external control
Parameters
iiObjectId | input | integer | internal ID |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/progress.p)
do transaction on error undo, throw:
if not (valid-handle(vhExternalQuery) and
viExternalUID = vhExternalQuery:unique-id)
then do:
create buffer vhExternalBuffer for table "fcExternalControl":U in widget-pool "persistent".
create query vhExternalQuery in widget-pool "persistent".
vhExternalQuery:forward-only = yes.
vhExternalQuery:set-buffers(vhExternalBuffer).
vhExternalQuery:private-data = "Persistent". /* do not ever delete this query */
viExternalUID = vhExternalQuery:unique-id.
end.
vhExternalQuery:query-prepare
("for each fcExternalControl where fcExternalControl.DbObjectId = ":U +
string(iiObjectId)).
vhExternalQuery:query-open().
vhExternalQuery:get-first(exclusive-lock, no-wait).
do while vhExternalBuffer:locked:
viLockCount = viLockCount + 1.
if viLockCount > 5
then do:
vhExternalQuery:query-close().
oiReturnStatus = -3.
return.
end.
pause 3 no-message.
vhExternalQuery:get-current(exclusive-lock, no-wait).
end.
if vhExternalBuffer:available
then do:
publish "Logging.DatabaseAccess"
("delete fcExternalControl":U, vhExternalBuffer).
vhExternalBuffer:buffer-delete().
end.
else assign oiReturnStatus = -3.
end.
finally:
if vhExternalQuery <> ? then vhExternalQuery:query-close().
end finally.