project BLF > class Persistence (Progress) > method QueryDestroy

Description

release dynamic query object

PreCondition

This method is used in query calls and should not be used anywhere else.


Parameters


ihDestinationBufferinputhandle


Internal usage


BLF
method Progress.ReadQuery


program code (program1/progress.p)

if valid-handle (ihDestinationBuffer)
then do:
    vhDS = ihDestinationBuffer:data-source.
    
    if valid-handle (vhDS)
    then do:
        vhQuery = vhDS:query.
        
        ihDestinationBuffer:detach-data-source().
        delete object vhDS.
        
        if valid-handle (vhQuery)
        then do:
            viTables = vhQuery:num-buffers.
            do viFcCount1 = 1 to viTables:
                vhBuffer[viFcCount1] = vhQuery:get-buffer-handle(viFcCount1).
            end.
            
            viFcCount2 = vhQuery:unique-id.
            delete object vhQuery.
            do viFcCount1 = 1 to viTables:
                find tQbuffers where
                     tQbuffers.tcTable     = vhBuffer[viFcCount1]:name and
                     tQbuffers.tiIsInUseBy = viFcCount2                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:
                    tQbuffers.thBuffer:buffer-release().
                    tQbuffers.tiIsInUseBy = 0.
                end.
                else delete object vhBuffer[viFcCount1].
            end.
        end.
    end.
end.