- SQL
- PL/SQL
- PL/SQL Avanzato
- DBA
- Forms
- Tips and Tricks
 
 
 

 
 
> Area Sorgenti Oracle  
 

Reports da Forms
di Mirko Scognamiglio

Spesso e volentieri c'è la necessità, da parte del programmatore, di allegare alla form di Developer anche uno o più reports che visualizzino, sotto formato cartaceo, i dati contenuti all'interno delle tabelle del Database Oracle. In nostro aiuto il tool Developer contiene Oracle Developer Reports 6i che può interagire direttamente con Forms 6i. Come? Facile, una volta creato il Layout con Report e averlo salvato con estensione .RDF, lo si può richiamare da Forms.
Con questa procedura è quindi possibile richiamare da Form, un report e visualizzarne l'anteprima con Acrobat Reader (con estensione PDF).


PROCEDURE URL_HTTP_REPORT (modalita varchar2 default 'PDF')
IS

lista_id paramlist;
interfaccia_utente varchar2(100) := get_application_property(user_interface);
percorso_fisico varchar2(300) := null;
percorso_virtuale varchar2(300) := null;
nome_report varchar2(100) := null;
par_nomereport varchar2(2000);

BEGIN

-- lettura della variabile di ambiente fisica macchina nt abbinata a /
-- variabili create nel regedit
 tool_env.getvar('reports60_physical_map',percorso_fisico);
 tool_env.getvar('reports60_virtual_map',percorso_virtuale);

-- nome del file = nome del report + ora di creazione
 nome_report := to_char(sysdate,'yymmddhh24miss');

-- preparazione id list aparametri per run_product
 lista_id := get_parameter_list('lista_parametri_stampa');

 if not id_null(lista_id) then
   destroy_parameter_list(lista_id );
 end if;

 lista_id := create_parameter_list('lista_parametri_stampa');
 add_parameter(lista_id,'paramform' ,text_parameter,'no');

-- nome report da richiamare nome_report_creato.rdf
 par_nomereport := 'nome_report_creato';

-- preparazione url page per applicazione web o preparazione
-- run product per applicazioni client server

-- selezione della modalita' di stampa
-- formato del report creato, in questo caso sarà un .pdf
 add_parameter(lista_id, 'desformat', text_parameter, 'pdf');
 add_parameter(lista_id, 'destype', text_parameter, 'file');

 add_parameter(lista_id,'desname' ,text_parameter, percorso_fisico||nome_report||'.pdf');

 run_product(reports, par_nomereport, synchronous, runtime, filesystem, lista_id, null);

-- in questo caso il file verrà creato sotto web, rete intranet
 if get_application_property(user_interface) = 'web' then
   web.show_document(percorso_virtuale||nome_report||'.pdf');
 else
   if upper(modalita)='pdf' then
-- percorso per aprire acrobat reader per leggere il report creato
   host('c:\programmi\adobe\acrobat 4.0\reader\acrord32.exe '
         ||percorso_fisico||nome_report||'.pdf');
   end if;
 end if;

END;