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 |