IMPRIMIR DESDE FORM

jvolarte
21 de Junio del 2006
Se Puede imprimir algún reporte desde form sin tener que levantarel developer report, es decir se me ocurre con un botón o un procedimiento invocar la impresión de dicho reporte.

Rodolfo Reyes
21 de Junio del 2006
Lo que se puede es ejecutar un reporte desde form, y por medio de parametros le indicas que no quieres previsualizarlo en la pantalla si no que se imprima. Esto causa el efecto de que al oprimir un boton se imprime el reporte.

Para esto utilizas el parametro DESTYPE y le pones como valor PRINTER.

aisainz
21 de Junio del 2006
yo para imprimir directamente desde form lo que hago es lo siguiente:
un program unit ,
PROCEDURE IMPRIMIR (Informe in varchar2, PARAMETROS IN VARCHAR2) IS
report_id REPORT_OBJECT;
report_job_id VARCHAR2(100);
rep_status VARCHAR2(20);
JOB_NUMBER number;
BOTON NUMBER;
BEGIN
report_id := FIND_REPORT_OBJECT ('INFORME');
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_DESTYPE, PRINTER);
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_FILENAME, Informe||'.rdf');
--SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_DESFORMAT, 'HTML');
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_DESNAME, :GLOBAL.PRINTER);
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_EXECUTION_MODE, RUNTIME);
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_COMM_MODE, SYNCHRONOUS);
SET_REPORT_OBJECT_PROPERTY (report_id, REPORT_SERVER, :global.rep_server);
--
if parametros is not null then
set_report_object_property(report_id, REPORT_OTHER,PARAMETROS);
end if;
--
report_job_id := RUN_REPORT_OBJECT (report_id);
rep_status := REPORT_OBJECT_STATUS (report_job_id);
WHILE rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') LOOP
rep_status := report_object_status (report_job_id);
END LOOP;
IF rep_status != 'FINISHED' THEN
MESSAGE('Se ha producido un error');pause;
raise form_trigger_failure;
END IF;
END;

y luego lo llamo asi:
IMPRIMIR (:global.proceso);

espero que te sirva.