I'm working in MR on a couple of drill-down procedures along the lines of "Select a user, select a user's record, select a report to run against that record."
My problem is that I cannot find a good way to get a dynamic list of reports. It would be great if I could return a list of the Standard Reports from the MR Interface, much like how the Report Assistant lists them out when you are specifying drill-down information.
Any help would be appreciated.
August 12, 2005, 03:30 PM
susannah
you can make your own file of reports by reading the fex directory with a dos command, write the resulting list to a file, CMD DIR D:/IBI/WEBFOCUS52/basedir/.../*.fex > MYLIST.txt and then read that file , rewriting it (with option tags around the fex names,)into a dropdown list in your fex launch page.
the fexnames themselves might not be very useful, since they'll be short names , not very informative, so you might have to run that list thru a decode.
August 12, 2005, 08:18 PM
Francis Mariani
Here's a master and a fex I've developed to read the MRE domain HTML file and print a list of FEXes. At the moment I cannot filter on a folder name. I'd like to change the Master to somehow have multiple segments, but I cannot recall how to do that with a flat file.>Enjoy.
$
MREBASEDIR
FILE=MREBASEDIR, SUFFIX=FIX, $
SEGNAME=MRE_LINE, SEGTYPE=S0,
$ FIELD=MRE_LINE, MRE_LINE,
A200, A200, MISSING=OFF ,$SEGNAME=MRE_FOLDER,
PARENT=MRE_LINE, SEGTYPE=S0, $FIELD=MRE_FOLDER_LINE,
MRE_FOLDER_LINE,
A200, A200, MISSING=OFF ,$
DEFINE MRE_LINE_TYPE/A10 =
IF MRE_LINE CONTAINS 'HTML>' OR
'HEAD>' OR 'TITLE>' OR 'BODY>' OR
'FONT>' OR '<P>' THEN 'HTMLTAG'
ELSEIF MRE_LINE CONTAINS '
< !--' THEN 'COMMENT' ELSE
IF MRE_LINE CONTAINS '.kmd' OR
'app/help.htm' THEN 'MISC'
ELSE IF MRE_LINE CONTAINS '<A HREF=''#'
THEN 'FOLDER' ELSE IF MRE_LINE CONTAINS
'.fex' THEN 'FEX'
ELSE
IF MRE_LINE CONTAINS '.htm' THEN
'HTML' ELSE'LINE';-- Determine
Folder ID and Name DEFINE MRE_
FOLDER_ID/A12 = SUBSTR(200, MRE_FOLDER_LINE,
11, 22, 12, 'A12');
DEFINE MRE_FONMS/I2 = POSIT(MRE_
FOLDER_LINE, 200, 'MRFLAG=''none''>', 14, 'I2') + 14;
DEFINE MRE_FONME/I2 = POSIT
(MRE_FOLDER_LINE, 200, '</A>',
4, 'I2') - 1;
DEFINE MRE_FOLDER_NM/A60 =
SUBSTR(200,
MRE_FOLDER_LINE, MRE_FONMS,
MRE_FONME, 60, 'A60');Determine FEX ID
and Name
DEFINE MRE_FXS/I2 = POSIT
(MRE_LINE, 200, 'app/', 4, 'I2') + 4;<br />DEFINE MRE_FXE/I2 = POSIT
(MRE_LINE, 200, '.fex', 4, 'I2') +
3;DEFINE MRE_FXL = MRE_FXE -
MRE_FXS + 1;
DEFINE MRE_FEX_ID/A12 =
SUBSTR(200, MRE_LINE, MRE_FXS,
MRE_FXE, MRE_FXL, 'A12');
DEFINE MRE_FXNMS/I2 = POSIT
(MRE_LINE, 200, '''>', 2, 'I2') + 2;
DEFINE MRE_FXNME/I2 = POSIT(MRE_LINE,
200, '</A>', 4, 'I2') - 1
DEFINE MRE_FXNML = MRE_FXNME -
MRE_FXNMS + 1;DEFINE MRE_FEX_NM/A60 = SUBSTR(200, MRE_LINE, MRE_FXNMS,
MRE_FXNME, MRE_FXNML, 'A60');
Determine HTML ID and Name
DEFINE MRE_HTS/I2 = POSIT(
MRE_LINE, 200, 'app/', 4, 'I2') +
4;DEFINE MRE_HTE/I2 = POSIT
(MRE_LINE, 200, '.htm', 4, 'I2') + 3;
DEFINE MRE_HTL = MRE_HTE - MRE_HTS + 1;
DEFINE MRE_HTML_ID/A12 =
SUBSTR(200, MRE_
LINE, MRE_HTS, MRE_HTE, MRE_HTL, 'A12');
/>DEFINE MRE_HTNMS/I2 =
POSIT(MRE_LINE, 200, '''>', 2, 'I2')
+ 2;DEFINE MRE_HTNME/I2 = P
OSIT(MRE_LINE, 200, '</A>', 4, 'I2') - 1;
DEFINE MRE_HTNML =
MRE_HTNME -
MRE_HTNMS + 1;
DEFINE MRE_HTML_NM/A60 = SUBSTR(200,
MRE_LINE, MRE_HTNMS, MRE_HTNME,
MRE_HTNML, 'A60');
DEFINE MRE_PROG_ID/A12 =
IF MRE_LINE_TYPE EQ
'FEX' THEN MRE_FEX_ID ELSE
IF MRE_LINE_TYPE EQ 'HTML'
THEN MRE_HTML_ID ELSE TITLE='Program ID', $DEFINE MRE_PROG_NM/A60 = IF
MRE_LINE_TYPE EQ 'FEX'
THEN MRE_FEX_NM ELSE IF MRE_LINE_TYPE EQ 'HTML'
THEN MRE_HTML_NM ELSE '';TITLE='Program Name',
$Determine MRE parameters
DEFINE MRE_PMS/I2 = POSIT(
MRE_LINE, 200, 'MRFLAG=', 7, 'I2') +
8;DEFINE MRE_PME/I2 = POSIT(MRE_LINE, 200, '''>', 2, 'I2') - 1;DEFINE MRE_PML =
MRE_PME - MRE_PMS + 1;DEFINE
MRE_PARMS/A60 = SUBSTR(200,
MRE_LINE, MRE_PMS, MRE_PME, MRE_PML, 'A60');
DEFINE MRE_PARMS_PP/A3 =
IF MRE_PARMS CONTAINS '
skipamper' THEN 'No' ELSE 'Yes';
TITLE='Prompt for,Parameters', $DEFINE MRE_PARMS_SU/A3 =
IF MRE_PARMS CONTAINS 'hidden' THEN
'No' ELSE 'Yes'; TITLE=
'Show on,User''s List', $
DEFINE MRE_PARMS_DF/A3 = IF MRE_PARMS
CONTAINS 'defer' THEN 'Yes' ELSE 'No';
TITLE='Only run,Deferred',
DEFINE MRE_PARMS_OL/A3 = IF MRE_PARMS CONTAINS 'runasolap' THEN 'Yes' ELSE 'No';
TITLE='Run with,OLAP',
[code]-SET &ECHO=ALL;SET PAGE = NOLEAD-RUNFILEDEF MREBASEDIR DISK\ibi\apps\basedir\retrocab\ retrocab.htm>TABLE FILE MREBASEDIR PRINT MRE_PROG_ID MRE_PROG_NM >WHERE MRE_LINE_TYPE IN ('FEX', 'HTML') ON TABLE SET STYLESHEET TYPE=REPORT, GRID=OFF, FONT='VERDANA', SIZE=8, $ ENDSTYLE<br />ENDThis message has been edited. Last edited by: <Mabel>,
August 15, 2005, 08:27 AM
Tony A
.... and if you are using resource layout tool to b uild your (D)HTML then strip the stylesheet info, add ON TABLE PCHOLD FORMAT XML and then change your SELECT box to call the procedure. I use the simple fex below to supply available years in the target database
SET HOLDLIST = P
RINTONLYSQL
select year(bk_date) as byear
from BIDEV.dbo.c1_maindata s1
group by bk_dateorder by byear desc
TABLE<br />HOLD AS REPYEARS
ENDTABLE FILE REPYEARS
SUM MAX.BYEAR AS VALUE
BY HIGHEST BYEAR AS DISPLAY
ON TABLE PCHOLD FORMAT XML
END
the important elements are - sourcetype="typeFex" datasource="app/repyears.fex" and presto - instant dynamic select population courtesy of ibirls.js javascript module.This message has been edited. Last edited by: <Mabel>,