project QadFinancials > class Business Component > method GetComment


Parameters


icDomaininputcharacter
icRefinputcharacter
icTypeinputcharacter
icLanginputcharacter
iiIndxinputinteger
iiSeqinputinteger
opCommentoutputlongchar
oiReturnStatusoutputintegerReturn 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.