ENVIAR PARAMETROS DESDE EL FORM AL REPORT 6I
Puedes usar esto que siempre uso desde el formulario (por ejemplo desde un boton del form que llama al report),
Te describo lo que hace :
1.- Se crea una lista de parametros, si ya existe se debe destruir para luego crearla.
2.- Luego se adiciona los parametros con "add_parameter" tantas lineas como parametros tengas (en tu caso PAIS, CIUDAD colocaras dos lineas de add_parameter ), el nombre de los parametros debe ser el mismo que tienes en el reporte si no es asi no podra recibir correctamente el parametro. Ademas te recomiento que uses datos de tipo caracter pues en mi caso he tenido problemas con los datos de tipo fecha, luego en el query del report lo convierto a fecha, solo te lo recomiendo en caso tengas problemas con el tipo de dato fecha.
3.- La sentencia "add_Parameter(plid, 'PARAMFORM', TEXT_PARAMETER, 'NO')" se usa para que no se muestre la ventanita de parametros propia del report, pues al crear un reporte con parametro te crea una ventana de parametros por defecto, en este linea le decimos que no lo muestre al llamar al report.
4.- Siempre he utilizado el "run_product" para llamar al reporte, no es necesario que coloques la extension rdf solo el nombre del reporte y llamara al compilado de extension "rep", puedes colocar la ruta completa de la ubicación del archivo en caso no este configurada la clave del regedit reports_path, juega con los parametros del "run_product" si lo quieres mostrar en vista previa o mandarlo directamente a la impresora, puedes ver los parametros en el form builder en la ayuda presionas F1 y ahi buscas los datos del "run_product" y juegas segun lo que quieras.. .
PROCEDURE pass_parameter IS
plid paramlist;
the_param varchar2(15) := 'tmpdata';
BEGIN
plid := get_parameter_list(the_param);
/* check if 'tmpdata' exists */
IF NOT id_null(plid) THEN
destroy_parameter_list(plid);
END IF;
/* if it does destroy it */
plid := create_parameter_list(the_param);
/* create it afresh */
add_parameter(plid, 'departmentno', TEXT_PARAMETER,to_char(:dept.deptno));
/* associate the param in the form with the param in the report */
add_Parameter(plid, 'PARAMFORM', TEXT_PARAMETER, 'NO');
/* to suppress the parameter form displaying */
run_product(REPORTS, /* product name */
'formrep.rdf', /* Oracle Reports module */
SYNCHRONOUS, /* communication mode */
RUNTIME, /* execution mode */
FILESYSTEM, /* location of the Reports module */
plid, /* handle to the parameter list */
null
);
END;
Saludos
Luis Pablo