My user community wants to select multi countries (10 or so) and then have the reports output in HTML. I want to loop thru the Table file and with each new country output to HTML. The first country works fine, but no output on others (Japan). Thanks in Advance Here is the code.
-SET ECHO ON; -SET &APP_EX = 'ITALY,JAPAN'; -SET &INCUST = ''; -SET &INCUST = &APP_EX; -***************************************** -*DETERMINE INCUST FOR MULTIBLE CUSTOMERS -***************************************** -DEFAULT APPEX = 0; -SET &CTR=1; -SET &PARSEVAL = STRIP(&APP_EX.LENGTH, &APP_EX, ',','A&APP_EX.LENGTH'); -SET &PARSEVAL = TRUNCATE(&PARSEVAL); -SET APPEX = (&PARSEVAL.LENGTH / 5); -:GETPARM1 -SET &APPEX.&CTR = GETTOK(&APP_EX,&APP_EX.LENGTH,&CTR, ',', &APP_EX.LENGTH, 'A&APP_EX.LENGTH'); -*SET &APPEX.&CTR = (&APPEX.&CTR/236); -TYPE ............................ -TYPE APP_EX : &APPEX.&CTR -TYPE ............................ -* File TESTRPT1.fex TABLE FILE CAR PRINT COUNTRY CAR MODEL BODYTYPE WHERE COUNTRY EQ '&APPEX.&CTR' ON TABLE HOLD AS RPT1 FORMAT HTMTABLE END
-HTMLFORM BEGIN html body !IBI.FIL.RPT1 ; /body /html -HTMLFORM END -RUN -SET &CTR = &CTR+1; -IF &CTR LE &APPEX GOTO :GETPARM1;This message has been edited. Last edited by: LCLMO37,
July 14, 2007, 02:45 AM
Alan B
The basic issue is that you are trying to output more than one HTML page, which is not possible. You can change your existing code to output just one page by changing the single loop and having 2 loops, one for the table and one for the output, but the results are far from perfect:
-SET &ECHO=ALL;
-SET &APP_EX = 'ITALY,JAPAN';
-SET &INCUST = '';
-SET &INCUST = &APP_EX;
-*****************************************
-*DETERMINE INCUST FOR MULTIBLE CUSTOMERS
-*****************************************
-DEFAULT APPEX = 0;
-SET &CTR=1;
-SET &PARSEVAL = STRIP(&APP_EX.LENGTH, &APP_EX, ',','A&APP_EX.LENGTH');
-SET &PARSEVAL = TRUNCATE(&PARSEVAL);
-SET APPEX = (&PARSEVAL.LENGTH / 5);
-:GETPARM1
-SET &APPEX.&CTR = GETTOK(&APP_EX,&APP_EX.LENGTH,&CTR, ',', &APP_EX.LENGTH, 'A&APP_EX.LENGTH');
-*SET &APPEX.&CTR = (&APPEX.&CTR/236);
-TYPE ............................
-TYPE APP_EX : &APPEX.&CTR
-TYPE ............................
-* File TESTRPT1.fex
TABLE FILE CAR
PRINT COUNTRY
CAR
MODEL
BODYTYPE
WHERE COUNTRY EQ '&APPEX.&CTR'
ON TABLE HOLD AS RPT&CTR FORMAT HTMTABLE
END
-SET &CTR = &CTR+1;
-IF &CTR LE &APPEX GOTO :GETPARM1;
-HTMLFORM BEGIN
<html>
<body>
-SET &CTR=1;
-:GETTAB1
!IBI.FIL.RPT&CTR;
-SET &CTR = &CTR+1;
-IF &CTR LE &APPEX GOTO :GETTAB1;
<body>
<html>
-HTMLFORM END
Another approach, based on your example, could be:
-SET &ECHO=ALL;
-SET &APP_EX = 'ITALY,JAPAN';
-SET &SCREEN='''' || STRREP(&APP_EX.LENGTH,&APP_EX,1,',',6,''' OR ''',&APP_EX.LENGTH+100,'A100') || '''';
TABLE FILE CAR
PRINT COUNTRY
CAR
MODEL
BODYTYPE
WHERE COUNTRY EQ &SCREEN
ON TABLE PCHOLD AS RPT FORMAT HTML
END
Alan. WF 7.705/8.007
July 14, 2007, 10:41 AM
susannah
The idea is:
-HTMLFORM BEGIN
<html>
<body>
!IBI.FIL.RPT1;
!IBI.FIL.RPT2;
!IBI.FIL.RPT3;
... etcetera
</body>
</html>
-HTMLFORM END
kick it up a notch and place your reports anywhere you want on the screen... if your user only chooses 2 countries, there is no RPT3, and the nice thing is, it doesn't matter.
-HTMLFORM BEGIN
<html>
<body>
<table><tr><td>
!IBI.FIL.RPT1;
</td><td>
!IBI.FIL.RPT2;
</td><td>
!IBI.FIL.RPT3;
</td></tr></table>
... etcetera
</body>
</html>
-HTMLFORM END
In Focus since 1979///7706m/5 ;wintel 2008/64;OAM security; Oracle db, ///MRE/BID
July 16, 2007, 10:57 AM
LCLMO37
Thanks for the input. Using Alan B. 1st suggestion could work. What I did not state was that I need to loop thru 7 different reports as well. (Not shown) I will report more later.
here is revised code.
-SET ECHO ON; -SET &XREPORTVALUE='1,2,3,4,5,6,7'; -SET &ALLAPP_EX = 'ITALY,JAPAN'; -SET &ALLINCUST = ''; -SET &ALLINCUST = &ALLAPP_EX; -***************************************** -*DETERMINE INCUST FOR MULTIBLE CUSTOMERS -***************************************** -DEFAULT ALLAPPEX = 0; -SET &ALLCTR=1; -SET &PARSEVAL = STRIP(&ALLAPP_EX.LENGTH, &ALLAPP_EX, ',','A&ALLAPP_EX.LENGTH'); -SET &PARSEVAL = TRUNCATE(&PARSEVAL); -SET ALLAPPEX = (&PARSEVAL.LENGTH / 5); -:ALLGETPARM1 -SET &ALLAPPEX.&ALLCTR = GETTOK(&ALLAPP_EX,&ALLAPP_EX.LENGTH,&ALLCTR, ',', &ALLAPP_EX.LENGTH, 'A&ALLAPP_EX.LENGTH'); -TYPE ............................ -TYPE ALLAPP_EX : &ALLAPPEX.&ALLCTR -TYPE ............................ -* File TESTRPT1.fex TABLE FILE CAR PRINT COUNTRY CAR MODEL BODYTYPE WHERE COUNTRY EQ '&ALLAPPEX.&ALLCTR' ON TABLE HOLD AS RPT&ALLCTR FORMAT HTMTABLE END -SET &ALLCTR = &ALLCTR+1; -IF &ALLCTR LE &ALLAPPEX GOTO :ALLGETPARM1; -SET &APP_EX = &XREPORTVALUE; -TYPE &XREPORTVALUE -SET &ALLCTR=1; -TYPE THE ALLCTR VALUE IS: &ALLCTR -RUN -HTMLFORM BEGIN
-***************************************** -*DETERMINE WHAT REPORTS WERE SELECTED -***************************************** -DEFAULT APPEX = 0;
You shouldn't even need to worry about the HOLD AS HTMTABLE and -HTMLFORM. If you're just outputting to HTML, just run them one after the other in your loop and they come out in HTML one after the other.
Regards,
Darin
In FOCUS since 1991 WF Server: 7.7.04 on Linux and Z/OS, ReportCaster, Self-Service, MRE, Java, Flex Data: DB2/UDB, Adabas, SQL Server Output: HTML,PDF,EXL2K/07, PS, AHTML, Flex WF Client: 77 on Linux w/Tomcat