Skip Headers

Oracle9i Forms Developer and Forms Services Migrating Forms Applications from Forms6i
Release 2 (9.0.2)

Part Number A92183-01
Go To Documentation Library
Home
Go To Product List
Solution Area
Go To Index
Index

Go to previous page Go to next page

14
Integrating Reports and Graphics

Oracle Graphics6i is no longer shipped with Oracle9i Forms. In addition, the Charting wizard has been removed from Forms. This chapter describes how you can call existing Graphics6i and Reports applications from a form.

Oracle Graphics6i

You cannot create new charts because Oracle Graphics6i is no longer shipped with Oracle9i Forms. However, you can display existing charts in Forms applications that have been migrated.

Note:

If your forms use the Graphics Web Cartridge or Oracle Graphics6i Runtime to display Graphics6i objects, you should remain on Forms6i. The Graphics Web Cartridge was supported in the Forms 6i base release and Oracle Application Server (OAS) 4.0.8.2. OAS 4.0.8.2 is no longer supported. Forms6i Release 2 (released as part of Oracle9iAS 1.0.2.1) did not support the Graphics Web Cartridge. The recommendation for users using Graphics on the Web was to use Graphics embedded in Reports6i. Reports6i was enhanced to support dynamic Graphics so that it was possible to bring interactive charts to the Web without using the Graphics Web Cartridge. A whitepaper available at http://otn.oracle.com describes Graphics/Reports integration.

Displaying Existing Charts in Oracle9i Forms

If your form contains embedded Oracle Graphics6i displays, you can migrate the form to Oracle9i Forms by doing the following:

Note:

The following registry entries are read directly from the Forms6i ORACLE_HOME registry:

Editing Existing Chart Items

You can edit the properties of existing chart items, create new chart items in Oracle9i Forms Developer, and populate a chart item with an OGD file that was created in Oracle Graphics6i Developer. However, future releases of Forms may further restrict Graphics6i functionality.

Oracle Reports

You can embed new and existing Reports applications in forms that have been migrated to Oracle9i Forms.

You can no longer use the Reports client runtime engine to output Reports in the Web. From Forms50 forward, the RUN_REPORT_OBJECT built-in is available in Forms Developer to run integrated reporting in Forms. The Run_Product built-in is obsolete in Oracle9i Forms for running Oracle Reports applications from Forms.

Oracle9i Forms and Oracle9i Reports are now Web-based only, and do not have client/server runtime engines. Therefore, integrated reports in Oracle9i Forms applications must be recoded to use the RUN_REPORT_OBJECT built-in and Reports Services.

Displaying Reports in Oracle9i Forms

If your form contains embedded Oracle Reports applications, you can migrate the form to Oracle9i Forms by changing the integrated call to Oracle Reports to use:

Using Run_Product in Forms to run integrated Oracle Reports is no longer supported in Oracle9i Forms. The Oracle9i Forms Migration Assistant is provided to help you migrate your applications to use Run_Report_Object. See Chapter 2, "Using the Oracle9i Forms Migration Assistant" for more information.

Example

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. For additional details about the logic used in this example, see Notes About the Example.

/* 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 Reports9i 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;

Notes About the Example

Note:

Do not forget to delete the timer when it is no longer needed.

Using Parameter Lists in RUN_REPORT_OBJECT

Parameter lists that were used with RUN_PRODUCT in client-server mode can also be used with RUN_REPORT_OBJECT calling Reports Services. System parameters must be set by the Set_Report_Object_Property. The syntax for using parameter lists in RUN_REPORT_OBJECT is as follows:

report_job_id:=run_report_object(report_id,paramlist_id);

where paramlist_id is the same id used with RUN_PRODUCT.

Parameter settings can be any of the following:

Other settings are as follows:

Migration Steps

You can use the Oracle9i Forms Migration Assistant described in Chapter 2, "Using the Oracle9i Forms Migration Assistant" to change integrated Reports calls in your Oracle9i Forms modules. The Oracle9i Forms Migration Assistant adds code to your application modules that redirects Run_Product calls to Reports and uses the Run_Report_Object built-in and Reports Services. The resulting conversion is of the same quality as using Run_Product and the runtime engine in Forms6i.

To manually migrate Reports in Forms, do the following:

  1. Find all occurrences of Run_Product.

  2. Identify and locate the parameter lists used with these calls.

  3. Remove all of the Reports system parameter settings like desname and destype from the parameter lists.

  4. Find the Reports node ID for the Reports node name defined in Oracle9i Forms Developer or the Forms6i Builder.

  5. Create Set_Report_Object_Property codes for DESNAME, REPORT_SERVER, DESFORMAT, DESTYPE, COMM_MODE, and EXECUTION:MODE in your PL/SQL.

  6. Use Run_Report_Object(report_node_id, paramlist_id) to reuse your parameter lists that had been created for Run_Product.

Note:

Detailed information about how to change calls to Oracle Reports in Forms 6i to use Run_Report_Object are provided in a whitepaper on http://otn.oracle.com.


Go to previous page Go to next page
Oracle
Copyright © , 2002 Oracle Corporation.

All Rights Reserved.
Go To Documentation Library
Home
Go To Product List
Solution Area
Go To Index
Index