Passagem de Parametros para um relatório

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
Avatar do usuário
Spectreman
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Ter, 29 Mar 2005 4:56 pm
Localização: Tóquio
DOMINANTES, ÀS ORDENS!

Estou construindo um relatorio em report Builder 10g e Forms Builder 10g e estou sem saber como eu passo parametros para executar o relatório o meu problema é o seguinte:

O meu relatorio esta construido da seguinte forma:

Selecionar tudo

SELECT DISTINCT U.UNID_NOME_FANTASIA, DRH.FUN_NOME, E.ESPE_NOME, 
TO_CHAR(A.AGENDA_DATA, 'DD/MM/YYYY') data_agenda, (SUBSTR(A.AGENDA_HORA, 1, 2)||':'||SUBSTR(A.AGENDA_HORA, 3, 4)) agenda, 
PAC.PACI_NOME, DR.DOEN_SIGLA, 
A.ATAM_NUMERO_ATENDIMENTO_A||'/'||A.ATAM_ANO_ATENDIMENTO atendimento, DECODE(A.AGENDA_ATIVO, 'S', 'Ativa', 'N', 'Suspenso', 'E', 'Excluído') situacao
FROM AGENDA A, UNIDADES U, PACIENTES PAC, PROFISSIONAIS P, SISRH.FUNCIONARIO DRH, ESPECIALIDADES E, DOENCAS_REFERENCIADA DR
WHERE (A.PROF_CODIGO = TO_CHAR(:p_medic, '9999')
 AND A.UNID_CODIGO = TO_CHAR(:p_unid '999999999999')
 AND A.AGENDA_DATA = TO_DATE(:p_data ', 'dd/mm/yyyy'))
 AND ((A.PACI_MATRICULA = PAC.PACI_MATRICULA(+))
 AND (A.PROF_CODIGO = P.PROF_CODIGO)
 AND (P.PROF_CNS = DRH.FUN_CNS_PROF)
 AND (A.ESPE_CODIGO = E.ESPE_CODIGO)
 AND (DR.DOEN_CODIGO = A.AGENDA_SIGLA)
 AND (U.UNID_CODIGO = A.UNID_CODIGO))
Este sql esta dentro do report builder na parte instrucoes de consulta SQL.
Quando eu rodo ele dentro do report builder ele funciona normalmente chamando os parametros. Até ai tudo bem.

Depois dele pronto eu precisso passar o parametro para ele a partir do forms builder, é ai que esta o problema como eu faco isso, estou tentando fazer da seguinte forma.
Criei um Bloco de Dados chamado Bloco com 3 itens(txt_Unidade,txt_dtAgenda||,txt_medico) para passar o valor dos parametros.

No botao Imprimir eu coloco o seguinte codigo:

Selecionar tudo

declare
 report_id Report_Object;
 ReportServerJob VARCHAR2(1000);
BEGIN
 report_id:= find_report_object('REL_Agenda');
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_COMM_MODE,SYNCHRONOUS);
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_SERVER,'Server');
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_DESTYPE,printer);
  
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'P_MEDIC='||:bloco.txt_dtAgenda||' paramform=yes');
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'P_Unidade='||:bloco.txt_Unidade||' paramform=yes');
 SET_REPORT_OBJECT_PROPERTY(report_id,REPORT_OTHER,'P_Medic='||:bloco.txt_medico||' paramform=yes');
 ReportServerJob:=run_report_object(report_id);
END;

E quando eu vou executar o relatorio ele trava parece que esta sem comunicaçao com os parametros do relatorio que esta no Forms Report

Como eu faço para passar parametros utilizando o Run_report_object?
Avatar do usuário
rcruz
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Ter, 04 Jan 2005 10:52 am
Localização: Candido Mota

Naõ entendi???? Esse Relatório vai ser solicitado via Forms onde atraves do proprio formulario você passa os parametros para o Report?????
Robson :-o
Avatar do usuário
dr_gori
Moderador
Moderador
Mensagens: 5024
Registrado em: Seg, 03 Mai 2004 3:08 pm
Localização: Portland, OR USA
Contato:
Thomas F. G

Você já respondeu a dúvida de alguém hoje?
https://glufke.net/oracle/search.php?search_id=unanswered

Meu arqui-inimigo Spectreman-man-man-man...

Cara..Tem um paper da Oracle sobre isso:
http://www.oracle.com/technology/produc ... amform.pdf

Acho que te ajudará. Tem até uma "procedure generica" pra chamar o reports... Dá um alhada aí... Se funcionou avisa a galera! :-o
Avatar do usuário
Spectreman
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Ter, 29 Mar 2005 4:56 pm
Localização: Tóquio
DOMINANTES, ÀS ORDENS!

Eu tenho um relatorio feito em report builder 10 g e tenho que chamar ele a partir do forms utilizando passando parametros como eu faço para passar parametros do forms para o report executar um relatorio?( se possivel mandar este relatório direto para a impressora).

Se alguém tiver um pedaço de codigo que possa disponibilizar eu agradeço?
Avatar do usuário
rcruz
Rank: Programador Pleno
Rank: Programador Pleno
Mensagens: 32
Registrado em: Ter, 04 Jan 2005 10:52 am
Localização: Candido Mota

Não sei se vai resolver seu problema mas eu fiz algo parecido, estou colocando o código que eu usei:

Selecionar tudo

req_id         number;

begin	
           req_id := FND_REQUEST.SUBMIT_REQUEST(null
                                   ,nome_executavel
                                   ,NULL
                                   ,NULL
                                   ,FALSE
                                   ,v_parametro_1
                                   ,v_parametro_2
                                   ,v_parametro_3
                                   ,v_parametro_4
                                   ,v_parametro_5
                                   ,chr(0)
                                   ,'','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''   --parametros de 1 até 100
                                   ,'','','','','','','','','','','',''); --parametros de 1 até 100
          IF req_id = 0 THEN
             FND_MESSAGE.RETRIEVE;
             FND_MESSAGE.ERROR;
             RAISE FORM_TRIGGER_FAILURE;
          ELSE
             :system.message_level := 25;
             STANDARD.COMMIT;
             :system.message_level := 0;
             fnd_message.set_name('SQLGL','GL_REQUEST_SUBMITTED');
             fnd_message.set_TOKEN('REQUEST_ID',TO_CHAR(req_id), FALSE);
             fnd_message.show;
             insert_record;
          END IF;
        exception
    	      when others then
            message(sqlerrm);
            RAISE FORM_TRIGGER_FAILURE;
        end;  
Tomara que possa te ajudar. :-o
Robson
Avatar do usuário
Spectreman
Rank: Programador Sênior
Rank: Programador Sênior
Mensagens: 48
Registrado em: Ter, 29 Mar 2005 4:56 pm
Localização: Tóquio
DOMINANTES, ÀS ORDENS!

Fiz assim:

ACRESCENTEI NO REGISTRO DO WINDOWS (REPORTS_PATH) O DIRETORIO COM OS RELATORIOS "C:\RELATORIO;"

ABRI O ARQUIVO:

Selecionar tudo

C:\oracle\forms_10g\reports\conf\cgicmd.dat 
COM O BLOCO DE NOTAS E ACRESCENTEI AS LINHAS DE COMANDO:

Selecionar tudo

; SISTEMA
reptest: userid=login/senha@banco %*
DEPOIS ACRESCENTEI NO SEU FORMULARIO A CHAMADA DE RELATÓRIOS:

Selecionar tudo

WEB.SHOW_DOCUMENT('/reports/rwservlet?reptest&report=RELATORIO.rdf&desformat=htmlcss&destype=cache&parametro=valor','_none');
Responder
  • Informação
  • Quem está online

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