project BLF > class BStoredSearch > method GetFields
Description
GetFields
Parameters
icLookupReference | input | character | LookupReference |
icSSRowid | input | character | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
BLF
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.