You are on page 1of 9

Utiliza Oracle Forms de una Manera Facil: Reporte A

través de un Botón
Publicado: abril, 2011 en Uncategorized

En el siguiente ejercicio vamos a llamar a un reporte a través de un Botón when buttton_pressed en Forms builder

1. Abrimos el Forms Builder teniendo en cuenta la creación del usuario hr con contraseña curso, en la ventana de comandos a

través de sqlplus además de la conexión con la BD XE Subir el start oc4j.

2. Creamos un reporte en Reports Developer Extension en un archivo .rdf llamado reporte el cual quedo guardado en la ruta

del disco c:\reporte.rdf

3. Creamos un Bloque de Datos en Forms llamando a la Tabla Empleados y asignamos el campo employee_idcomo nuestra

llave primaria.
4. Luego hacemos un informe dentro de Forms llamado Reporte y se le asigna el archivo reporte.rdf

5. Antes de terminar creamos un parámetro dentro de parameters de forms se le asigna employee_id tipo number (numérico)

valor en 1

6. se crea el botón dentro del lienzo en el disparador when buttton_pressed

7. Agregamos el código al disparador (trigger) when buttton_pressed:

Declare /*se declaran las variables tipo reporte*/

repid REPORT_OBJECT;

paramlist_id ParamList; /*Id de la lista de parámetros*/

paramlist_name VARCHAR2(10):=’tmplist’; /*nombre de la lista de parámetros*/

v_rep VARCHAR2(100); /*Variable reporte*/


rep_status Varchar2(20); /*estado*/

Begin /*obtener los parametros de la lista, si no compare id entonces destruya datos*/

paramlist_id:= get_parameter_list(paramlist_name);

IF NOT id_null(paramlist_id) THEN

destroy_parameter_list(paramlist_id);

END IF; /*fin de la condicion*/

paramlist_id:=create_parameter_list(paramlist_name);

add_parameter(paramlist_id,’EMPLOYEE_ID’,TEXT_PARAMETER,:employees.employee_id);

/*añadir parámetro a la lista de parámetros*/

repid := find_report_object(‘REPORT6′);

/*Determinamos si se visualizará la ventana de parámetros*/

SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,’paramform=no’);

SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,BATCH);

/*Fijamos el valor para el tipo de ejecución (SYNCHRONOUS, ASYNCHRONOUS) sincronizado o desincronizado*/


SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);

/*Fijamos el valor para el tipo de salida (cache, printer, file, mail…)*/

SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE);

/*Fijamos el valor para el formato de salida del reporte (html, pdf, rtf)*/

SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,’pdf’);

/*Fijamos el valor para el servidor de reportes que ejecutará el report*/

SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,’reporte’);

/*Ejecutamos el reporte*/

v_rep := RUN_REPORT_OBJECT(repid, paramlist_id);

rep_status := report_object_status(v_rep);

WHILE rep_status in (‘RUNNING’,’OPENING_REPORT’,’ENQUEUED’) LOOP

rep_status := report_object_status(v_rep);

END LOOP;
if rep_status = ‘FINISHED’ then

/*Visualizamos la salida del reporte*/

WEB.SHOW_DOCUMENT(‘/reports/rwservlet/getjobid’||substr(v_rep,instr(v_rep,’_’,-1)+1)||’?server=trabajo’,’_blank’);

Else /*Sino*/

message(‘Existe un error en la ejecución’); /*Mensaje de Alerta*/

end if;

About these ads

14JAN
Ejecutar un reporte desde oracle forms
Comments Off

1. Asumamos que se tiene el archivo de reporte c:\misreportes\prueba.rdf

2. Abrimos el formulario desde el cual se desea ejecutar el reporte

3. Desde el navegador de objetos, añadimos un objeto informe(reporte) al formulario

Seleccionamos la ubicacion del reporte que se desea añadir ( para nuestro ejemplo, el archivo
c:\misreportes\prueba.rdf )

llamaremos a este reporte rep_vinculado


4. Verificar que el servicio de reportes haya sido instalado. Si no ha sido instalado, el siguiente comando
lanzado desde la linea de comandos del Sistema operativo, instala el servicio.
rwserver -install nombre_del_servicio_de_reportes autostart=yes

5. Verificar el valor de la variable REPORTS_PATH (en el registro de windows). Para nuestro ejemplo, el
valor debe contener la cadena c:\misreportes

6.Finalmente, podemos colocar el siguiente código en el trigger WHEN-BUTTON-PRESSED, para un


botón del formulario.

declare

repid REPORT_OBJECT;
v_rep VARCHAR2(100);
rep_status Varchar2(20);

BEGIN

repid := find_report_object(‘REP_VINCULADO’);

– Determinamos si se visualizará la ventana de parámetros


SET_REPORT_OBJECT_PROPERTY(repid,REPORT_OTHER,’paramform=no’);
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_EXECUTION_MODE,BATCH);
–Fijamos el valor para el tipo de ejecución (SYNCHRONOUS, ASYNCHRONOUS)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_COMM_MODE,SYNCHRONOUS);

–Fijamos el valor para el tipo de salida(cache, printer, file, mail..)


SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESTYPE,CACHE);

–fijamos el valor para el formato de salida del reporte (html, pdf, rtf)
SET_REPORT_OBJECT_PROPERTY(repid,REPORT_DESFORMAT,’html’);

–fijamos el valor para el servidor de reportes que ejecutará el report


SET_REPORT_OBJECT_PROPERTY(repid,REPORT_SERVER,’nombre_del_servicio_de_reportes’);

–ejecutamos el reporte
v_rep := RUN_REPORT_OBJECT(repid);
rep_status := report_object_status(v_rep);
WHILE rep_status in (‘RUNNING’,'OPENING_REPORT’,'ENQUEUED’) LOOP

rep_status := report_object_status(v_rep);

END LOOP;
if rep_status = ‘FINISHED’ then

–Visualizamos la salida del reporte

WEB.SHOW_DOCUMENT(‘/reports/rwservlet/getjobid’||substr(v_rep,instr(v_rep,’_',-
1)+1)||’?'||’server=nombre_del_servicio_de_reportes’,'_blank’);

else

message(‘error en la ejecucion’);

end if;

END;
martes, 12 de octubre de 2010

LLamar un Reporte desde oracle form


PROCEDURE Run_Emp_Report
IS
pl_id ParamList;
BEGIN
pl_id := GET_PARAMETER_LIST ('tmpdata'); --nombre del parametro temporal

IF NOT ID_NULL (pl_id)


THEN
DESTROY_PARAMETER_LIST (pl_id);
END IF;

pl_id := CREATE_PARAMETER_LIST ('tmpdata');

ADD_PARAMETER (pl_id,
'EMP_QUERY',--nombre del parametro del reporte
DATA_PARAMETER,
:EMP_RECS);-- item con el cual se va a parametrizar en reporte
ADD_PARAMETER (pl_id,
'PARAMFORM',
TEXT_PARAMETER,
'NO');-- esto es para que la ventana de los parametro no aparesca
--corro el reporte
RUN_PRODUCT (REPORTS,
'empreport',--nombre del reporte
SYNCHRONOUS,
RUNTIME,
FILESYSTEM,
pl_id,
NULL);
END;
Publicado por Jose Rafael San

You might also like