project BLF > class BStoredSearch > method GetFields

Description

GetFields


Parameters


icLookupReferenceinputcharacterLookupReference
icSSRowidinputcharacter
oiReturnStatusoutputintegerReturn status of the method.


Internal usage


BLF
method BStoredSearch.apiGetLookupInformation
method BStoredSearch.apiGetStoredSearch


program code (program1/bstoredsearch.p)

if icSSRowid = ""
then do:
    if num-entries(icLookupReference,"/":U) = 2
    then do:
        <I-1 {bFcOpenInstance
            &CLASS           = "session"}>
        <M-4 run GetBusinessFields (input  entry(2,icLookupReference,'/':U) (icReference), 
                            output tBusinessFields (tBusinessFields), 
                            output viLocalReturn (oiReturnStatus)) in Session>
        <I-3 {bFcCloseInstance
            &CLASS           = "session"}>
        if viLocalReturn <> 0
        then assign oiReturnStatus = viLocalReturn.
        if viLocalReturn < 0
        then return.
        
        for each tBusinessFields where
                 tBusinessFields.tcFcFieldType = "F":U on error undo, throw:
            find first tFilterFields where
                       tFilterFields.tcBusinessFieldName = tBusinessFields.tcFcFieldName no-error.
            if not available tFilterFields
            then do:
                assign viFilter = viFilter + 1.
                create tFilterFields.
                assign tFilterFields.tcBusinessFieldName = tBusinessFields.tcFcFieldName
                       tFilterFields.tcOperator          = (if tBusinessFields.tcDataType = "c":U then "matches":U else "=":U)
                       tFilterFields.tiSequence          = viFilter
                       tFilterFields.tlIsRange           = no
                       tFilterFields.tlIsVisible         = no.

                if icSSRowid <> ""
                then do:
                    <M-5 run AddDetailLine (input  'SSearchFilterField':U (icTable), 
                        input  tStoredSearch.tc_Rowid (icParentRowid), 
                        output viFcReturnSuper (oiReturnStatus)) in BStoredSearch>
                    if viFcReturnSuper <> 0
                    then oiReturnStatus = viFcReturnSuper.
                    if viFcReturnSuper < 0
                    then return.
                    assign tSSearchFilterField.SSearchFilterFieldBusField  = tBusinessFields.tcFcFieldName
                           tSSearchFilterField.SSearchFilterFieldOperator  = (if tBusinessFields.tcDataType = "c":U then "matches":U else "=":U)
                           tSSearchFilterField.SSearchFilterFieldSequence  = viFilter
                           tSSearchFilterField.SSearchFilterFieldIsRange   = no
                           tSSearchFilterField.SSearchFilterFieldIsVisibl = no.
                end.
            end.
        end.
        
        for each tBusinessFields where
                 tBusinessFields.tcFcFieldType = "B":U or
                 tBusinessFields.tcFcFieldType = "C":U                 
                 by tBusinessFields.tiSequence
                 on error undo, throw:
            find first tResultFields where
                       tResultFields.tcBusinessFieldName = tBusinessFields.tcFcFieldName no-error.
            if not available tResultFields
            then do:
                assign viResult = viResult + 1.
                create tResultFields.
                assign tResultFields.tcBusinessFieldName = tBusinessFields.tcFcFieldName
                       tResultFields.tiColumnSize        = 0
                       tResultFields.tiSequence          = viResult
                       tResultFields.tlIsVisible         = no
                       tResultFields.tiGroupSeq          = -1.

                if icSSRowid <> ""
                then do:
                    <M-6 run AddDetailLine (input  'SSearchResultField':U (icTable), 
                        input  tStoredSearch.tc_Rowid (icParentRowid), 
                        output viFcReturnSuper (oiReturnStatus)) in BStoredSearch>
                    if viFcReturnSuper <> 0
                    then oiReturnStatus = viFcReturnSuper.
                    if viFcReturnSuper < 0
                    then return.
                    assign tSSearchResultField.SSearchResultFieldBusField  = tBusinessFields.tcFcFieldName
                           tSSearchResultField.SSearchResultFieldColSize   = 0
                           tSSearchResultField.SSearchResultFieldSequence  = viResult
                           tSSearchResultField.SSearchResultFieldIsVisibl = no
                           tSSearchResultField.SSearchResultFieldGroupSeq  = -1.
                end.
            end.
        end.
    end.
end.
else do:
    find tStoredSearch where tStoredSearch.tc_Rowid = icSSRowid no-error.

    for each tSSearchFilterField where
             tSSearchFilterField.tc_ParentRowid = tStoredSearch.tc_Rowid
             by tSSearchFilterField.SSearchFilterFieldSequence
             on error undo, throw:
        create tFilterFields.
        assign tFilterFields.tcBusinessFieldName  = tSSearchFilterField.SSearchFilterFieldBusField
               tFilterFields.tcInitialValue       = tSSearchFilterField.SSearchFilterFieldIniVal1
               tFilterFields.tcSecondInitialValue = tSSearchFilterField.SSearchFilterFieldIniVal2
               tFilterFields.tcOperator           = tSSearchFilterField.SSearchFilterFieldOperator
               tFilterFields.tiSequence           = tSSearchFilterField.SSearchFilterFieldSequence
               tFilterFields.tlIsRange            = tSSearchFilterField.SSearchFilterFieldIsRange
               tFilterFields.tlIsVisible          = tSSearchFilterField.SSearchFilterFieldIsVisibl.
        assign viFilter = tSSearchFilterField.SSearchFilterFieldSequence.
    end.
    
    for each tSSearchResultField where
             tSSearchResultField.tc_ParentRowid = tStoredSearch.tc_Rowid
             by tSSearchResultField.SSearchResultFieldSequence
             on error undo, throw:
        create tResultFields.
        assign tResultFields.tcBusinessFieldName  = tSSearchResultField.SSearchResultFieldBusField
               tResultFields.tiColumnSize         = tSSearchResultField.SSearchResultFieldColSize
               tResultFields.tiSequence           = tSSearchResultField.SSearchResultFieldSequence
               tResultFields.tlIsVisible          = tSSearchResultField.SSearchResultFieldIsVisibl
               tResultFields.tcAggregate          = tSSearchResultField.SSearchResultFieldAggregat
               tResultFields.tiGroupSeq           = tSSearchResultField.SSearchResultFieldGroupSeq
               tResultFields.tcCBF                = tSSearchResultField.SSearchResultFieldCBF.
        assign viResult = tSSearchResultField.SSearchResultFieldSequence.
    end.
end.