Focal Point
Retrieve List of Standard Reports

This topic can be found at:
https://forums.informationbuilders.com/eve/forums/a/tpc/f/7971057331/m/3191088331

August 11, 2005, 09:26 PM
Josh
Retrieve List of Standard Reports
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 />END

This 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
combined with the f
ollowing HTML code snippet
<SELECT id=ITEM12 style="Z-INDEX: 31; LEFT: 
180px; WIDTH: 180px; 
POSITION: absolute;
TOP: 200px; HEIGHT: 
22px" 
Year" elementname="combobox12" elementtype="combobox"  
labelid caption="combobox" 
operation="NONE" 
ibiformat datatype="1" addalloption="0" dynalldisplayvalue="ALL" 
inchainindex="-1" chainnumber="-1" cacheruntimedata="0" 
displayfield numofrecords="-1" 
datafield sourcetype="typeFex" datasource="app/repyears.fex" 
datafieldtype>
</SELECT>
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>,
August 15, 2005, 06:17 PM
Josh
Cool stuff, I'll have to try those out this week.