[Progress Communities] [Progress OpenEdge ABL] Forum Post: RE: Question v11.7 Open Edge UI possibilities (automatic generated)

Status
Not open for further replies.
C

cjbree

Guest
filename: MKBROWSE.P /************************************************************************/ /* mkbrowse.p -- to build generic browse procedures for a database file */ /* */ /* Input: */ /* _File record in shared buffer "file" */ /* shared workfile "relate" describing database relationships */ /* */ /* For each "owner" of the given file, it produces: */ /* n.p - to browse the owner */ /* uses: .rec, .upd, .lf */ /* */ /* For each "mem" of the given file, it produces: */ /* n.p - to browse the member */ /* n.cr - to copy match fields from parent on create */ /* n.upd - to cascade update of match key in members */ /* Looks for index with leading match fields and */ /* uses subsequent component as scan field (warning if none) */ /* Uses: .lf, .upd, .rec */ /* */ /* For the file, it produces: */ /* .rec - to find the original record when joining */ /* .p - to browse the file */ /* .upd - to cascade update of match key in members */ /* */ /************************************************************************/ Define input parameter cFormaatGUI AS char. define shared buffer file for _file. define shared variable progpad as char. define shared workfile relate field owner like _file._file-name field mem like _file._file-name field idx like _index._index-name field numfld as integer format ">9" field matchlst as character format "x(80)" field dumpowner like _file._dump-name field dumpmem like _file._dump-name. define buffer xrelate for relate. define variable numfiles as integer. define variable jfiles as character. define variable xnumfiles as integer. define variable xjfiles as character. define variable i as integer. /**/ /********************* Process each owner of given file *********************/ for each relate where relate.mem = file._file-name by relate.owner: numfiles = numfiles + 1. jfiles = jfiles + "," + relate.owner. find _file where _file-name = relate.owner. find _index where recid(_index) = _file._Prime-Index. find first _index-field of _index. find _field of _index-field. xnumfiles = 0. xjfiles = "". for each xrelate where xrelate.mem = relate.owner by xrelate.owner: xnumfiles = xnumfiles + 1. xjfiles = xjfiles + "," + xrelate.owner. end. for each xrelate where xrelate.owner = relate.owner by xrelate.mem: if xrelate.mem = relate.mem then xjfiles = xjfiles + ",-". else do: xjfiles = xjfiles + "," + xrelate.mem. xnumfiles = xnumfiles + 1. end. end. output to value(progpad + lc(substr(relate.dumpmem, 1, 7)) + string(numfiles) + ".p"). put unformatted "~{browse_" cFormaatGUI ".i" skip space(4) "&file=" relate.owner skip space(4) "&where=""of " relate.mem """" skip space(4) "&lform=" lc(substr(relate.dumpowner, 1, 8)) ".lf" skip space(4) "&uform=" lc(substr(relate.dumpowner, 1, 8)) ".lf" skip space(4) "&OF" relate.mem "=/~*" skip. put unformatted space(4) "&sfld=" _field-name skip. put unformatted space(4) "&startup=""" lc(substr(relate.dumpmem, 1, 8)) ".rec """ skip space(4) "&update=""" lc(substr(relate.dumpowner, 1, 8)) ".upd """ skip. if xnumfiles > 0 then put unformatted space(4) "&numfiles=" xnumfiles skip space(4) "&jfiles=""" substring(xjfiles, 2) """" skip. put unformatted "}" skip "form with frame xlist 1 down." skip. output close. end. /**/ /******************** Process each member of given file ********************/ for each relate where relate.owner = file._file-name by relate.mem: numfiles = numfiles + 1. jfiles = jfiles + "," + relate.mem. output to value(progpad + lc(substr(relate.dumpowner, 1, 7)) + string(numfiles) + ".cr"). do i = 1 to relate.numfld: put unformatted relate.mem "." entry(i, relate.matchlst) " = " relate.owner "." entry(i, relate.matchlst) "." skip. end. output close. xnumfiles = 0. xjfiles = "". for each xrelate where xrelate.mem = relate.mem by xrelate.owner: if xrelate.owner = relate.owner then xjfiles = xjfiles + ",-". else do: xjfiles = xjfiles + "," + xrelate.owner. xnumfiles = xnumfiles + 1. end. end. for each xrelate where xrelate.owner = relate.mem by xrelate.mem: xnumfiles = xnumfiles + 1. xjfiles = xjfiles + "," + xrelate.mem. end. for _file where _file._file-name = relate.mem, each _index of _file: for each _index-field of _index, _field of _index-field: if lookup(_field-name, matchlst) = 0 then leave. end. if available _index-field /* and _index-seq = numfld + 1 JB */ then do: leave. end. else release _field. end. if not available _field then do: message "Could not find appropriate sfld for" relate.owner relate.mem. /* create _field. update _field. */ end. else do: /**/ output to value(progpad + lc(substr(relate.dumpowner, 1, 7)) + string(numfiles) + ".p"). put unformatted "~{browse_" cFormaatGUI ".i" skip space(4) "&file=" relate.mem skip space(4) "&where=""of " relate.owner """" skip space(4) "&lform=" lc(substr(relate.dumpmem, 1, 8)) ".lf" skip space(4) "&uform=" lc(substr(relate.dumpmem, 1, 8)) ".lf" skip space(4) "&OF" relate.owner "=/~*" skip. put unformatted space(4) "&sfld=" _field._field-name skip. put unformatted space(4) "&create=""" lc(substr(relate.dumpowner, 1, 7)) numfiles ".cr """ skip space(4) "&startup=""" lc(substr(relate.dumpowner, 1, 8)) ".rec """ skip space(4) "&update=""" lc(substr(relate.dumpowner, 1, 7)) numfiles ".upd """ skip. if xnumfiles > 0 then put unformatted space(4) "&numfiles=" xnumfiles skip space(4) "&jfiles=""" substring(xjfiles, 2) """" skip. put unformatted "}" skip. output close. end. output to value(progpad + lc(substr(relate.dumpowner, 1, 7)) + string(numfiles) + ".upd"). run cascade.p (input relate.mem, input matchlst). output close. end. /**************************** Process given file ****************************/ if numfiles > 0 then do: output to value(progpad + lc(substr(file._dump-name, 1, 8)) + ".rec"). put unformatted "find " file._file-name " where recid(" file._file-name ") = join-recid." skip. output close. end. find _index where recid(_index) = file._Prime-Index. find first _index-field of _index. find _field of _index-field. output to value(progpad + lc(substr(file._dump-name, 1, 8)) + ".p"). put unformatted "~{browse_" cFormaatGUI ".i" skip space(4) "&file=" file._file-name skip space(4) "&lform=" lc(substr(file._dump-name, 1, 8)) ".lf" skip space(4) "&uform=" lc(substr(file._dump-name, 1, 8)) ".lf" skip. put unformatted space(4) "&sfld=" _field-name skip. put unformatted space(4) "&update=""" lc(substr(file._dump-name, 1, 8)) ".upd """ skip. if numfiles > 0 then put unformatted space(4) "&numfiles=" numfiles skip space(4) "&jfiles=""" substring(jfiles, 2) """" skip. put unformatted "}" skip. output close. /************************** JB ****************************/ output to value(progpad + lc(substr(file._dump-name, 1, 8)) + ".upd"). run cascade.p (input file._file-name, input ""). output close.

Continue reading...
 
Status
Not open for further replies.
Top