ORACLE_REPORTS

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
elciodba
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Sex, 31 Out 2008 4:30 pm
Localização: belo horizonte-mg

Gostaria de saber se alguém sabe uma maneira mais atual de chamar os relatorio via forms hoje estou chamando da seguinte forma :

Selecionar tudo

  RUN_PRODUCT( REPORTS,: GLOBAL.DIRETORIO _TRABALHO| |V_SUB_DIRETORIO ||'\'||V_ NOME_FONTE, SYNCHRONOUS, RUNTIME, FILESYSTEM,V_ PL_ID,null) ; 
 
Mas quero mudar a forma de chamar para uma mais atualizada.Estou com o FORMS 6i

Obrigado

Elcio Francisco
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Pro 6i que eu conheço, é essa a forma mesmo.
porque da necessidade da mudança? Alguma situação especial?
elciodba
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Sex, 31 Out 2008 4:30 pm
Localização: belo horizonte-mg

Trevisolli,

Estamos querendo mudar para a forma CLIENTE/SERVIDOR e não como esta sendo feito agora.Por isso a necessidade de não usar mais diretorio.

Obrigado

elcio
Trevisolli
Moderador
Moderador
Mensagens: 2016
Registrado em: Qua, 12 Jan 2005 3:25 pm
Localização: Araraquara - SP
Abraço,

Trevisolli
OCA Oracle PL/SQL Developer Certified Associate
OCP Oracle Forms Developer Certified Professional
Araraquara-SP

Brother,

Quanto ao Diretório:

Costumamos trabalhar criando um MAPEAMENTO no teu servidor de aplicação e, apontar esse mapeamento no Regedit.

Funciona tranquilamente, passando-se depois, apenas o nome do arquivo (rep).

Qualquer coisa, manda pra gente.
elciodba
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 76
Registrado em: Sex, 31 Out 2008 4:30 pm
Localização: belo horizonte-mg

Trevisolli,

Hoje minha aplicação é assim :

Selecionar tudo

DECLARE
	PL_ID           PARAMLIST;
	v_DATA_BLOQUEIO BLOQUEIO.DATA_EXCLUSAO%TYPE := NULL;
	v_SEQUENCIA     VARCHAR2(20)                := NULL;
BEGIN  
	
  IF :CLIENTE.CARTAO IS NULL THEN
  	 MSG_INFORMACAO('Nenhum cliente encontrado! Tente efetuar a pesquisa novamente.');
  ELSE
 	
    IF MSG_CONFIRMACAO('Deseja emitir o Termo de Adesão?') THEN
	    /*GERA RELATORIO*/                                                                                                                                                                                                                                                --03.920.258.000.102
	  	PL_ID:= GET_PARAMETER_lIST('TMPDATA');
	    IF NOT ID_NULL(PL_ID) THEN
	       DESTROY_PARAMETER_lIST(PL_ID); 
	    END IF;
	    
	    SELECT LPAD(SEQ_TERMO_ADESAO.NEXTVAL,8,'0') INTO v_SEQUENCIA FROM DUAL;
	    
	    v_SEQUENCIA := v_SEQUENCIA||'-'||PCK_LIB.FC_DIGITO_VERIFICADOR(v_SEQUENCIA,0,'T');

		  PL_ID := CREATE_PARAMETER_LIST('TMPDATA'); 
	    ADD_PARAMETER(PL_ID, 'P_EMPRESA',TEXT_PARAMETER,:CLIENTE.EMPRESA);
	    ADD_PARAMETER(PL_ID, 'P_CLIENTE',TEXT_PARAMETER,:CLIENTE.CLIENTE);
	    ADD_PARAMETER(PL_ID, 'P_SEQUENCIA',TEXT_PARAMETER,V_SEQUENCIA);
	    ADD_PARAMETER(PL_ID,'PARAMFORM', TEXT_PARAMETER, 'NO');
	  	    
	    PC_DIRETORIO_FONTE('REL_TERMO_ADESAO','R', PL_ID);
	  END IF;
  END IF;  
END;
NO FORMS estou chamando da seguinte forma :

Selecionar tudo

RUN_PRODUCT(REPORTS,:GLOBAL.DIRETORIO_TRABALHO||'\'||V_NOME_FONTE,SYNCHRONOUS,RUNTIME, FILESYSTEM,V_PL_ID,null); 
Isso que eu quero mudar...Tem como você me ajudar nisso???? por favor;;;;

obrigado

Elcio
bertosro
Rank: Analista Júnior
Rank: Analista Júnior
Mensagens: 88
Registrado em: Sex, 18 Ago 2006 11:13 am
Localização: São Paulo - SP
Bertosro
MSN / TALK - roberto.fernandes@gmail.com

Selecionar tudo

PROCEDURE PRC_RELATORIO ( param_nome_rel               IN      varchar2,
                          param_copies                 IN      varchar2,
                          param_desformat              IN      varchar2,
                          param_desname                IN      varchar2,
                          param_destype                IN      varchar2,
                          param_orientation            IN      varchar2,
                          param_paramform              IN      varchar2,
                          param_xx                     IN      varchar2 ) IS

  repid                        REPORT_OBJECT;
  v_rep                        varchar2(50);
  
  string_conn                  varchar2(500);
  w_param                      varchar2(4000):= null;
  w_nome_relatorio             varchar2(50)  := null; 
  rep_status                   varchar2(200); 
  w_report_server              varchar2(200) := null; 
  
BEGIN

  ---------------------------------------------------------------------------------
  -- Altera o nome do objeto reports, por definição deve ser sempre UPPER e retirar
  --  a extensao do arquivo, alteracao feita para funcionar também em linux/unix...
  ---------------------------------------------------------------------------------
  w_nome_relatorio := upper(rtrim(rtrim(upper(param_nome_rel),'.RDF'),'.REP'));
 
  ---------------------------------------------------------------------------------
  -- Executa a atribuição de todos os parâmetros do relatório em uma única variável
  ---------------------------------------------------------------------------------
  
  w_param := param_xx;
  w_param := w_param||'+'||'orientation='||NVL(param_orientation,'Default');
  w_param := w_param||'+'||'paramform='||NVL(param_paramform,'no');                                                                                   
  
  ---------------------------------------------------------------------------------
  -- Localiza o Objeto REPORTS criado no "Object Navigator" do Forms 
  -- ATENÇÃO : O nome do NÓ REPORTS deve ter o mesmo nome do RELATORIO desenvolvido
  ---------------------------------------------------------------------------------
  repid := FIND_REPORT_OBJECT(w_nome_relatorio);  
  set_report_object_property(repid, report_filename, w_nome_relatorio);     

  ---------------------------------------------------------------------------------
  -- Verifica em qual ambiente o aplicativo esta sendo executado 
  -- WEB ou Cliente/Servidor 
  ---------------------------------------------------------------------------------
  
  IF GET_APPLICATION_PROPERTY(user_interface) <> 'WEB' THEN

     set_report_object_property(repid, report_desformat, param_desformat);          	

     IF UPPER( NVL(param_destype,'PRINTER') ) = 'SCREEN' THEN 
          set_report_object_property(repid, report_destype, Screen);

     ELSIF UPPER( NVL(param_destype,'PRINTER') ) = 'PREVIEW' THEN 
          set_report_object_property(repid, report_destype, Preview);

     ELSIF UPPER( NVL(param_destype,'PRINTER') ) = 'PRINTER' THEN    	    
       	  set_report_object_property(repid, report_destype, Printer);
  	    	set_report_object_property(repid, report_desname, chr(39)||param_desname||chr(39));
  	    	w_param := w_param||' '||'copies='||nvl(param_copies,1);

     ELSIF UPPER( NVL(param_destype,'PRINTER') ) = 'FILE' THEN    	    
       	  set_report_object_property(repid, report_destype, File);
       	  set_report_object_property(repid, report_desname, param_desname);

     END IF;

     set_report_object_property(repid, report_other,translate(w_param,'+',' '));               
            
     v_rep := RUN_REPORT_OBJECT(repid);
     
  ELSE   
     	
      ---------------------------------------------------------------
      -- Localizar o nome do REPORT SERVER                                                             
      ---------------------------------------------------------------
      w_report_server := fnc_report_server;    	
 
      ---------------------------------------------------------------
      -- Verifica se o relatorio será impresso via web sem visualizar
      ---------------------------------------------------------------
      IF UPPER( NVL(param_destype,'PRINTER') ) = 'PRINTER' THEN    	    

       	  message ( 'esta aqui 1'); pause;

          set_report_object_property(repid, report_desformat, param_desformat);          	
          -----------------------------------------------------------
          -- Selecionar o nome da impresso com base no nome
          -- do forms e usuario que esta sendo executado, foi definido 
          -- que para cada relatorio que for impresso direto sem visualizar
          -- o forms/usuario estarão cadastrados em uma tabela ...
          -----------------------------------------------------------
       	  message ( 'esta aqui 2'); pause;
       	       	
       	  set_report_object_property(repid, report_destype, Preview);

--       	  set_report_object_property(repid, report_destype, Printer);
       	  message ( 'esta aqui 3'); pause;

  	    	set_report_object_property(repid, report_desname, chr(39)||param_desname||chr(39));

  	      set_report_object_property(repid, report_desname, chr(39)||'DESENV_HP970'||chr(39));
       	  message ( 'esta aqui 4'); pause;

  	      w_param := w_param||' '||'copies='||nvl(param_copies,1);

          set_report_object_property(repid, report_other,translate(w_param,'+',' '));               
          v_rep := RUN_REPORT_OBJECT(repid);  	      
       	  message ( 'esta aqui 5'); pause;

      ELSE    
 
          /****
           set_report_object_property(repid,REPORT_EXECUTION_MODE,RUNTIME); 
           set_report_object_property(repid,REPORT_COMM_MODE,SYNCHRONOUS); 
           set_report_object_property(repid,REPORT_DESTYPE,CACHE); 
           set_report_object_property(repid,REPORT_SERVER, w_report_server);  
  	       set_report_object_property(repid, report_desformat, 'pdf');
           set_report_object_property(repid, report_other,translate(w_param,'+',' '));               

           v_rep := RUN_REPORT_OBJECT(repid);
           rep_status := REPORT_OBJECT_STATUS(v_rep); 

           WHILE upper(rep_status) <> 'FINISHED' LOOP 
              rep_status:=REPORT_OBJECT_STATUS(v_rep); 
           END LOOP;
    
           IF upper(rep_status) = 'FINISHED' THEN 
               ---------------------------------------------------------------
               -- Solicitacao do relatorio em Ambiente WEB
               ---------------------------------------------------------------
               web.Show_Document(FNC_WEB_DIRETORIO_VIRTUAL||'/getjobid='||
                                 substr(v_rep,instr(v_rep,'_',-1)+1)||'?server='||
                                 w_report_server,'_blank'); 
          ELSE
              Message('Erro ao executar o relatório : '||w_nome_relatorio||' Rep Status : '||rep_status||'  -  '||
                      'report server : '||w_report_server,no_acknowledge); 
          END IF;
          ******/

          --********************************************************************************************
          -- OUTRA FORMA DE CHAMAR RELATORIOS VIA WEB, SENDO QUE OS PARAMETROS SERÃO APRESENTADOS NA URL
          --
          --********************************************************************************************
       	
    	    string_conn:= rtrim(ltrim(GET_APPLICATION_PROPERTY(USERNAME)))||'/'||
                        rtrim(ltrim(GET_APPLICATION_PROPERTY(PASSWORD)))||'@'||
                        rtrim(ltrim(GET_APPLICATION_PROPERTY(CONNECT_STRING)));

          ------------------------------------------------------------------------------
          -- Solicitação para chamda do relatorio com os parametros visíveis ...
          ------------------------------------------------------------------------------
          web.Show_Document( FNC_WEB_DIRETORIO_VIRTUAL||'?server='||w_report_server||'+'||'report='||
                             w_nome_relatorio||'+'||
                             'desformat='||'pdf'||'+'||
                             'destype=cache'||'+'||
                             w_param||'+'||
                             fnc_converte_hexa('userid='||string_conn),'_blank'); 

        --********************************************************************************************
        --*********************************************************************************************/

      END IF;
      
  END IF;

END;
BERTOSRO :-o
Andrea
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 03 Abr 2009 4:56 pm
Localização: Salvador

bertosro, encontrei o seu código nesse fórum e gostaria de esclarecer uma dúvida: o parâmetro "param_xx" recebe o que?

Fiz testes e consegui fazer funcionar reports gerados como "retrato". Nenhum report "paisagem" funciona. Alguma dica?
Avatar do usuário
NightSpy
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 49
Registrado em: Ter, 09 Set 2008 4:18 pm
Localização: SP

Selecionar tudo

RUN_PRODUCT(REPORTS,:GLOBAL.DIRETORIO_TRABALHO||'\'||V_NOME_FONTE,SYNCHRONOUS,RUNTIME, FILESYSTEM,V_PL_ID,null);
Cara, creio que criando variaves de ambiente para o forms e reports, não seja necessario colocar ali o caminho inteiro do diretório e sim apenas o nome dele,exemplo:

Selecionar tudo

RUN_PRODUCT(REPORTS,NOME_FONTE,SYNCHRONOUS,RUNTIME, FILESYSTEM,V_PL_ID,null);
assim, todo cliente tendo tais variaveis de ambiente, mirando para o diretório dos .rep no servidor, funciona sem ter que alterar seu forms.

Só que ele só enxerga em tempo de execução. em tempo de design não.
Responder
  • Informação