Description
Mark a database object as in external control
Parameters
iiObjectId | input | integer | internal ID |
icExternal | input | character | external 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).
if vhExternalBuffer:locked
then do:
vhExternalQuery:query-close().
assign oiReturnStatus = -3.
return.
end.
if vhExternalBuffer:available
then assign vhExternalBuffer::ExternalId = icExternal
vlCreate = no.
else do:
vhExternalBuffer:buffer-create().
assign vhExternalBuffer::DbObjectId = iiObjectId
vhExternalBuffer::ExternalId = icExternal
vlCreate = yes.
end.
publish "Logging.DatabaseAccess"
((if vlCreate then "create" else "update") + " fcExternalControl":U, vhExternalBuffer).
vhExternalBuffer:buffer-release().
end.
finally:
if vhExternalQuery <> ? then vhExternalQuery:query-close().
end finally.