Parameters
icDomain | input | character | |
icRef | input | character | |
icType | input | character | |
icLang | input | character | |
iiIndx | input | integer | |
iiSeq | input | integer | |
opComment | output | longchar | |
oiReturnStatus | output | integer | Return status of the method. |
Internal usage
unused
program code (program1/business.p)
/* =========================================================================================================== */
/* This method retrieves comments from cd_det and/or cmt_det. */
/* We use a dynamic query accessing the database directly because the comments are stored in extent fields and */
/* extent fields are not supported by the BLF framework because they are seriously outdated. */
/* =========================================================================================================== */
/* 1. Initialize */
if icDomain = ?
then assign icDomain = "".
if icRef = ?
then assign icRef = "".
if icType = ?
then assign icType = "".
if icLang = ?
then assign icLang = "".
if iiIndx = ?
then assign iiIndx = 0.
if iiSeq = ?
then assign iiSeq = 0.
if icDomain = ""
then assign icDomain = vcDomainCode.
if icLang = ""
then assign icLang = current-language.
assign opComment = "".
/* 2. Query cd_det */
if icDomain <> "" and
icRef <> "" and
icType <> "" and
icLang <> ""
then do:
assign vcPrepare = "for each cd_det where" +
" cd_det.cd_domain = '" + icDomain + "' and" +
" cd_det.cd_ref = '" + icRef + "' and" +
" cd_det.cd_type = '" + icType + "' and" +
" cd_det.cd_lang = '" + icLang + "'".
if iiSeq = 0
then assign vcPrepare = vcPrepare + " by cd_det.cd_seq".
else assign vcPrepare = vcPrepare + " and cd_det.cd_seq = " + string(iiSeq).
create query vhQuery in widget-pool "non-persistent".
vhQuery:forward-only = true.
create buffer vhBuffer for table "cd_det" in widget-pool "non-persistent".
vhQuery:set-buffers(vhBuffer).
vhQuery:query-prepare(vcPrepare).
vhQuery:query-open().
vhQuery:get-first(no-lock).
do while not vhQuery:query-off-end:
do viFcCount1 = 1 to 15:
if opComment <> ""
then assign opComment = opComment + chr(10).
assign opComment = opComment + trim(vhBuffer:buffer-field("cd_cmmt"):buffer-value(viFcCount1)).
end.
assign opComment = trim(opComment, chr(10)).
vhQuery:get-next(no-lock).
end.
vhQuery:query-close().
delete object vhQuery.
assign vhQuery = ?.
delete object vhBuffer.
assign vhBuffer = ?.
end.
/* 3. Query cmt_det */
if icDomain <> "" and
iiIndx <> 0
then do:
assign vcPrepare = "for each cmt_det where" +
" cmt_det.cmt_domain = '" + icDomain + "' and" +
" cmt_det.cmt_indx = " + string(iiIndx).
if iiSeq = 0
then assign vcPrepare = vcPrepare + " by cmt_det.cmt_seq".
else assign vcPrepare = vcPrepare + " and cmt_det.cmt_seq = " + string(iiSeq).
create query vhQuery in widget-pool "non-persistent".
vhQuery:forward-only = true.
create buffer vhBuffer for table "cmt_det" in widget-pool "non-persistent".
vhQuery:set-buffers(vhBuffer).
vhQuery:query-prepare(vcPrepare).
vhQuery:query-open().
vhQuery:get-first(no-lock).
do while not vhQuery:query-off-end:
do viFcCount1 = 1 to 15:
if opComment <> ""
then assign opComment = opComment + chr(10).
assign opComment = opComment + trim(vhBuffer:buffer-field("cmt_cmmt"):buffer-value(viFcCount1)).
end.
assign opComment = trim(opComment, chr(10)).
vhQuery:get-next(no-lock).
end.
vhQuery:query-close().
delete object vhQuery.
assign vhQuery = ?.
delete object vhBuffer.
assign vhBuffer = ?.
end.
/* 4. Clean up */
finally:
if valid-handle(vhQuery)
then do:
if vhQuery:is-open
then vhQuery:query-close().
delete object vhQuery.
assign vhQuery = ?.
end.
if valid-handle(vhBuffer)
then do:
delete object vhBuffer.
assign vhBuffer = ?.
end.
end finally.