Chamar o Rports a partir de uma tela do Form 10g

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
TMONTEIRO
Rank: Estagiário Júnior
Rank: Estagiário Júnior
Mensagens: 1
Registrado em: Sex, 16 Mar 2007 9:42 am
Localização: recife - pe
TMonteiro
OCA

Pessoal sou novo aqui no fórum e estou precisando de ajuda para terminar este código...

Selecionar tudo

PROCEDURE CALL_REPORT(REP_NAME IN VARCHAR2) IS
 Report_Id  report_object;
 REP        varchar2(255);
  V_DT_INI   VARCHAR2(8);
  V_DT_FIM   VARCHAR2(8);
begin
	
 SELECT TO_CHAR(LAST_DAY(MAX(DT_INI_VIG)), 'DDMMYYYY'),    TO_CHAR(LAST_DAY(MAX(DT_INI_VIG)), 'DDMMYYYY')
      INTO V_DT_INI , V_DT_FIM
      FROM VALORES_DIVERSOS
     WHERE TVD_COD = 25;

 report_id:= FIND_REPORT_OBJECT(REP_NAME);
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE, SYNCHRONOUS         );
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_EXECUTION_MODE ,runtime       );
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE        ,file          );
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESFORMAT      ,'pdf'         );
SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESNAME        ,'L:\ADRH\FORMS_DESENVOLVIDOS\TESTE\FORM_REP\'||REP_NAME||'.PDF');
SET_REPORT_OBJECT_PROPERTY(report_id, REPORT_SERVER         ,'rep_recw2k31');
SET_REPORT_OBJECT_PROPERTY(report_id, REPORT_otheR    ,
   'EMP_INI='       || 1             || ' EMP_FIM='   || 1          ||
   ' FIL_INI='       || 1             || ' FIL_FIM='   || 99999      ||
   ' CHAPA_INI='   || 1             || ' CHAPA_FIM=' || 9999999999 ||
   ' DT_INI='      || V_DT_INI      || ' DT_FIM='    || V_DT_FIM   ||
   ' CCUSTO_INI='  || 1             || ' CCUSTO_FIM='|| 9999999999 ||
   ' UNEG_INI='    || '01'          || ' UNEG_FIM='  || '99'       ||
   ' REG_INI='     || 1             || ' REG_FIM='   || 99         ||
   ' CJCA_INI='    || 1             || ' CJCA_FIM='  || 99999      ||
   ' PENS_INI='    || 1             || ' PENS_FIM='  || 9999999    ||
   ' CHAPA_S_N='   || 'SIM'         ||
   ' CJCA_S_N='    || 'não'         ||
   ' CATSALARIAL=' || 'TO'          ||
   ' AFASTAMENTO=' || 'NA'          ||
   ' SITUACAO='    || 'NA'          ||
   ' DEMITIDO='    || 'não IMPORTA' ||
   ' TOTAL='       || 'não'         ||
   ' CAL_VAR='     || 'MC'          ||
   ' CHAPA_NOME='  || 'MATRICULA'   ||
   ' CCUSTO_S_N='  || 'não'         ||
   ' UNID_NEG_S_N='|| 'não'         || 
   ' IMPR_REG='    || 'não'         ||
   ' PENS_S_N='    || 'SIM'         ||
   ' PARAFORM=NO' );
	REP := RUN_REPORT_OBJECT(report_id);
END;
Estou tentando executar um relatório a partir de uma tela do form 10g...
Criei um objeto no Navigator especificando o caminho e o nome do relatório e no WHEN-BUTTON-PRESSED chamei esta procedure passando o nome do objeto que criei no Navigator...
Quando vou executar o form na aplicação ocorre o erro:

Selecionar tudo

FRM-41214: UNABLE TO RUN REPORT
SE alguém PUDER ME AJUDAR EU AGRADEÇO MUITO....
Avatar do usuário
alef
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 119
Registrado em: Ter, 06 Nov 2007 2:45 pm
Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo

olá!
você conseguiu resolver o seu problema????

estou com o mesmo erro
Avatar do usuário
alef
Rank: Analista Pleno
Rank: Analista Pleno
Mensagens: 119
Registrado em: Ter, 06 Nov 2007 2:45 pm
Localização: Patos de Minas - MG
Alexandre Matos
Patos de Minas - MG
Do interior de Minas para o resto do Mundo

oi? e ai? conseguiu? eu consegui....


http://glufke.net/oracle/viewtopic.php?t=2419 ta ai como eu fiz.
cron_rj
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 19 Dez 2007 9:10 am
Localização: Rio de Janeiro RJ

Para chamar um report pelo Forms , você deve ter o report server configurado na sua máquina ou na rede e botar o report na pasta configurada em REPORT_PATH (NO registro).

Utilizao o seguinte procedimento para fazer isso :

Selecionar tudo

PROCEDURE PRINT_REPORT (REP_SERVER    IN VARCHAR2,
												REP_OBJECT    IN VARCHAR2,
											  REP_DESFORMAT IN VARCHAR2,
											  REP_FILENAME  IN VARCHAR2,
											  REP_OTHER     IN VARCHAR2)
IS

-- Declarações:
   v_report_id      Report_Object;
   você_job_id        VARCHAR2(100); 
   você_report_job_id VARCHAR2(100); 
   você_rep_status    VARCHAR2(100);
   você_rep_server    VARCHAR2(100):=REP_SERVER;  
BEGIN
   /* Obtém o identificador do report */
   v_report_id := FIND_REPORT_OBJECT(REP_OBJECT);
   /* Ajusta as propriedades do report */

   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_COMM_MODE, ASYNCHRONOUS);
   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_DESTYPE, CACHE);
   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_DESFORMAT, REP_DESFORMAT);
   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_SERVER, você_rep_server);
   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_FILENAME, REP_FILENAME);
   SET_REPORT_OBJECT_PROPERTY (v_report_id, REPORT_OTHER, REP_OTHER);

   /* Executa o report */
   você_report_job_id := RUN_REPORT_OBJECT (v_report_id);

   /* Aguarda o final da execucaoo, já que ela é assí­ncrona */
   você_rep_status := REPORT_OBJECT_STATUS(você_report_job_id);
   WHILE( você_rep_status in ('RUNNING','OPENING_REPORT','ENQUEUED') )
   LOOP 
      você_rep_status := report_object_status(você_report_job_id);     		
   END LOOP;

   /* Como a saida do relatorio é gerada em cache, tem que
      usar a procedure web.show_document para exibir a saída */
   IF( você_rep_status='FINISHED' )
   THEN
      /* O report job id retornado inclui também o nome do report server.
         Fica algo como repserver_20, por isso usamos substr para extrair
         somente o número */
      você_job_id := substr (você_report_job_id, length (você_rep_server) + 2);
      /* O caminho virtual definido abaixo é configurado no Report Server */
      web.show_document ('/reports/rwservlet/getjobid'|| você_job_id || '?server=' || você_rep_server);
   ELSE
      Msg_Alert('Execução do Report - '||REP_FILENAME||' Falhou:' || você_rep_status, 'W', TRUE);
   END IF;
END;
Passe os parametos corretamente, se seu Report server e seu REPORT_PATH estiverem configurados corretamente vai funcionar.
cron_rj
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 25
Registrado em: Qua, 19 Dez 2007 9:10 am
Localização: Rio de Janeiro RJ

TMONTEIRO,

Inicia a instância, abra o navegador e digite isso:

Selecionar tudo

 http://localhost:8889/reports/rwservlet/showenv?server=rep_recw2k31
Em

Selecionar tudo

REPORT_PATH
, veja se o caminho L:\ADRH\FORMS_DESENVOLVIDOS\TESTE\FORM_REP\ esta configurado .
Responder
  • Informação
  • Quem está online

    Usuários navegando neste fórum: Nenhum usuário registrado e 11 visitantes