La Web del Programador: Comunidad de Programadores
 
    Pregunta:  35832 - IMPRIMIR DESDE ORACLE FORMS
Autor:  Mario Caceres silva
Me gustaria saber como puedo imprimir en forma directa en Oracle Forms. La idea es que tenga un boton y este ejecute un procedimiento
y listo, se puede por favor respondanme .

  Respuesta:  Wilmar Mauricio Usuga Escobar
Hola Mario!!!!, espero que estes muy bien. Desde Developer Forms se puede enviar la impresion a la pantalla, dispositivo de impresion o archivo. Por lo general, en los programas se utilizan las dos primeras opciones.

Entonces, vamos a crear un procedimiento que permita el envio de unos parametros a un reporte. Esos parametros no son obligatorios, y en este caso, sirven como filtro para sacar la información. Ahora, este ejemplo esta basado en que tú tienes un reporte hecho en Developer Reports, el cual vamos a llamar desde Forms. Te voy a colocar una pequeña explicacion en comentarios. Ok........Iniciamos:

PROCEDURE llamar_reporte IS

--declaramos la variable de lista de parametros
pl_id paramlist;
--declaramos la variable que contendra la ruta donde se encuentra el
--reporte a ejecutar
reporteb varchar2(100) := 'C:\mi_reporte.rep' ;

BEGIN
--crea un objeto virtual de lista de parametros.
pl_id := get_parameter_list('par_report');

--si hay problemas al crear la lista, la destruye.
if not id_null(pl_id) then
destroy_parameter_list ( pl_id );
end if;

--Crea de nuevo la lista virtual.
pl_id := create_parameter_list ('par_report');

--asigna los parametros de entrada del bloque :b0 a cada parametro:
--el valor del bloque :b0.cod_unidad, lo asigna al parametro del reporte
--aux_cod_unidad, etc...
add_parameter (pl_id,'aux_cod_unidad',TEXT_PARAMETER, :b0.cod_unidad);
add_parameter(pl_id,'aux_cod_periodo',TEXT_PARAMETER, :b0.cod_periodo);
add_parameter(pl_id,'aux_cod_pensum',TEXT_PARAMETER, :b0.cod_pensum);
add_parameter(pl_id,'aux_num_identificacion',TEXT_PARAMETER, :b0.num_identificacion);

--Con esta linea de código determino, si la ventana de parametros del reporte se muestra en pantalla o no.
add_parameter (pl_id,'PARAMFORM',TEXT_PARAMETER,'NO');

--Con esta linea de codigo ejecuto el reporte.
run_product (REPORTS, reporte, SYNCHRONOUS, RUNTIME,FILESYSTEM, pl_id, NULL);

END;

Ahora, este procedimiento lo puedes acomodar a tus necesidades. Lo puedes llamar desde un boton, en el trigger When-Button-Pressed, de
la siguiente manera:

llamar_reporte ;

Si tienes alguna inquietud o comentario, ya tienes mí e-mail....

Mauricio Usuga Escobar.
OSC