project BLF > class Database Component > method EventPublishingLookForUpdates

Description

look for a record in the class tables with updates (tc_Status not empty)


Parameters


icParentTableinputcharacter
icParentRowidinputcharacter
bcQueryNamesinput-outputcharacter
bcQueryHandlesinput-outputcharacter
olUpdateFoundoutputlogical
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method database.EventPublishing
method database.EventPublishingLookForUpdates


program code (program1/database.p)

for each bDynRel where
        (bDynRel.tcFcFrom = icParentTable and
         bDynRel.tcParent = "") or
         bDynRel.tcParent begins (icParentTable + ",") on error undo, throw:

    viFcCount1 = lookup(bDynRel.tcFcTo,bcQueryNames).
    if viFcCount1 = 0
    then do:
        create query vhQuery in widget-pool "non-persistent".
        vhQuery:set-buffers(bDynRel.thFcBuffer).
        bcQueryNames = bcQueryNames + "," + bDynRel.tcFcTo.
        bcQueryHandles = bcQueryHandles + "," + string(vhQuery).
    end.
    else vhQuery = widget-handle(entry(viFcCount1,bcQueryHandles)).
    
    vhQuery:query-prepare("for each t_o":U + bDynRel.tcFcTo + " where t_o"
                                           + bDynRel.tcFcTo + ".tc_ParentRowid = '" + icParentRowid + "' and t_o"
                                           + bDynRel.tcFcTo + ".tc_Status <> ''").
    vhQuery:query-open().
    vhQuery:get-first().
    vlFcOk = vhQuery:query-off-end.
    vhQuery:query-close().

    if vlFcOk
    then do:
        assign vhBuffer = bDynRel.thFcBuffer.
        vhQuery:query-prepare("for each t_o":U + bDynRel.tcFcTo).
        vhQuery:query-open().
        vhQuery:get-first().
        do while not vhQuery:query-off-end:
            <M-1 run EventPublishingLookForUpdates
               (input  bDynRel.tcFcTo (icParentTable), 
                input  vhBuffer::tc_Rowid (icParentRowid), 
                input-output bcQueryNames (bcQueryNames), 
                input-output bcQueryHandles (bcQueryHandles), 
                output olUpdateFound (olUpdateFound), 
                output viFcReturnSuper (oiReturnStatus)) in database>
            if olUpdateFound
            then do:
                vhQuery:query-close().
                return.
            end.
            vhQuery:get-next().
        end.
        vhQuery:query-close().
    end.
    else do:
        olUpdateFound = yes.
        return.
    end.
end.