Skip to Main Content

Breadcrumb

Question and Answer

Connor McDonald

Thanks for the question, abdullah.

Asked: June 23, 2021 - 8:26 pm UTC

Last updated: June 30, 2021 - 7:28 am UTC

Version: Reports 6i

Viewed 1000+ times

You Asked

Dear all
i am running a client/server environment using Oracle 10g and Forms 6i/Reports 6i.
The problem is that i want to run multiple reports on the Client at once.i-e
the user can view multiple reports at the same time. I called the reports
through RUN_PRODUCT and use ASYNCHRONUS option, but it queues the report,
not show the Preview.

and Connor said...

They are really mutually exclusive. To run a series of reports in the background, the aim is to have them run concurrently on the report server and product their output.

The "Preview" only really makes sense when you want to "pause" and view the report output before doing anything with it.

To run a stack of reports asynchronously, the best option is reports server and using RUN_REPORT_OBJECT not RUN_PRODUCT, eg

/* The following example runs a report using the RUN_REPORT_OBJECT Built-in. The
 report_object node defined in Forms Developer is assumed to be "report_node1". A
 user-defined Reports parameter "p_deptno" is passed by Forms using the value in
 the "dept.deptno" field. The Reports parameter form is suppressed */


 DECLARE
 v_report_id              Report_Object;
 vc_report_job_id                  VARCHAR2(100);  /* unique id for each Report      request */
 vc_rep_status                    VARCHAR2(100);           /* status of the Report job */
          
 BEGIN
        /* Get a handle to the Report Object itself. */
        v_report_id:= FIND_REPORT_OBJECT('report_node1');
        SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_COMM_MODE, SYNCHRONOUS);
        SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESTYPE,CACHE);
 
 /* Define the Report output format and the name of the Reports Server as well as
 a user-defined parameter, passing the department number from Forms to the Report.
 The Reports parameter form is suppressed by setting  paramform  to "no". */
        SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_DESFORMAT, '<HTML|HTMLCSS|PDF|RTF|XML|DELIMITED>');
        /* replace <ReportServerTnsName> with the name of the Reports Services as defined
 in your tnsnames.ora file */
        SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_SERVER, '<ReportServerTnsName>');
        SET_REPORT_OBJECT_PROPERTY(v_report_id,REPORT_OTHER, 'p_deptno='||:dept.deptno||'paramform=no');
        /* finally, run the report and retrieve the Reports job_id as a handle to the
 Reports process */
        vc_report_job_id:=RUN_REPORT_OBJECT(report_id);
 
 /*The report output is not delivered automatically to the client, which is okay
 because the Web is a request model. Thus the next step is to check if the report
 finished. */
 
        vc_rep_status := REPORT_OBJECT_STATUS(vc_report_job_id);
        IF vc_rep_status='FINISHED' THEN
 /* Call the Report output to be displayed in a separate browser window. The URL
 for relative addressing is only valid when the Reports Server is on the same host
 as the Forms Server. For accessing a Remote Reports Server on a different
 machine, you must use the prefix http://hostname:port/ */
 web.show_document ('/<virtual path>/<reports cgi or servlet name>/getjobid='||
 vc_report_job_id ||'?server='|| '<ReportServerTnsName>','_blank');
        ELSE
        message ('Report failed with error message '||rep_status);
        END IF;
END;


and most importantly.... Reports 6i is over 20 years old ... Surely its time to move on

Is this answer out of date? If it is, please let us know via a Comment