Passagem de parametros/conversão

Dicas e truques sobre Oracle Reports Builder - modo gráfico ou modo caractere, ascii, arquivo .PRT, etc
Responder
Avatar do usuário
sergio.areas
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 14
Registrado em: Seg, 15 Mar 2010 9:12 pm
Localização: Rio de Janeiro
Contato:
Vergonha não é o não saber e sim não procurar uma solução

Boa tarde surgiu uma nova duvida

Essa é a query que fiz no reports para geração do realtorio:

Selecionar tudo

select id_questao, rownum||' - '||dsc_questao 
from( select q.id_questao id_questao, q.dsc_questao dsc_questao
from questao q, assunto a
where q.id_assunto = a.id_assunto
and q.ind_nivel = 1
and q.id_assunto in  :PASSUNTO
order by dbms_random.value ), dual
where rownum  <= 10
No forms para passagem de parametro eu fiz o seguinte codigo para o parametro p:assunto

Selecionar tudo

DECLARE
	PLIST PARAMLIST;
	PL_NAME VARCHAR2(15) := 'PL';
	ASSUNTO VARCHAR2(1000);
	WRK_CONT NUMBER := 0;
	
BEGIN
  Go_block('BLC_ASSUNTO');
  first_record;
    loop
      if :BLC_ASSUNTO.CHECK_BOX_ASSUNTO = 'S' then
      	 if WRK_CONT = 0 then
           ASSUNTO := :blc_assunto.id_assunto;
  	   wrk_cont := wrk_cont +1;
  	 else
           ASSUNTO := assunto||' , '|| + :blc_assunto.id_assunto;
        end if;  
      end if; 
      
      IF :SYSTEM.LAST_RECORD = 'TRUE' THEN
           EXIT;
        ELSE
           NEXT_RECORD;
        END IF;
    
    END LOOP;
  
	PLIST := GET_PARAMETER_LIST(PL_NAME); 
	
	IF ID_NULL(PLIST) THEN
		PLIST := CREATE_PARAMETER_LIST(PL_NAME);
		
    ADD_PARAMETER(PLIST, 'PCURSO', TEXT_PARAMETER, ASSUNTO);
	
	RUN_PRODUCT(REPORTS, 'C:\PL.rdf', SYNCHRONOUS, RUNTIME, FILESYSTEM, PLIST, NULL);
A duvida é: Não consigo passar por parametro em varchar2 os numeros concatenados com viirgulas pra pegar no select do reports, alguma ideia?
obg.
gfkauer
Rank: DBA Sênior
Rank: DBA Sênior
Mensagens: 389
Registrado em: Ter, 27 Jul 2010 1:34 pm
Localização: Sapiranga - RS
Contato:
Quem falou que programar era fácil??

Quanto mais dificil for a implementação mais valorizado seu trabalho será!

Acessem: www.gfkauer.com.br

Bom se entendi bem você quer a opção de passar um array de ID_ASSUNTO correto?

eu faria algo deste tipo,

alteraria a query para:

Selecionar tudo

Select id_questao,
       rownum || ' - ' || dsc_questao
  From (Select q.id_questao  id_questao,
               q.dsc_questao dsc_questao
          From questao q,
               assunto a
         Where q.id_assunto = a.id_assunto
           And q.ind_nivel = 1
           &filtro_assunto
         Order By dbms_random.Value),
       dual
 Where rownum <= 10
e passaria o parametro desta forma:

Selecionar tudo

ADD_PARAMETER(PLIST, 'filtro_assunto', TEXT_PARAMETER, 
'And q.id_assunto In '||:assunto); 
Desta forma você passa a clausula inteira para o select do report.
Sei que isto funciona em diversos casos, agora basta saber se lhe atende...
Avatar do usuário
sergio.areas
Rank: Estagiário Sênior
Rank: Estagiário Sênior
Mensagens: 14
Registrado em: Seg, 15 Mar 2010 9:12 pm
Localização: Rio de Janeiro
Contato:
Vergonha não é o não saber e sim não procurar uma solução

Cara brigadão, ajudou muito :)
obg mesmo.
eu tentei isso mas tava errando porque estava number no parametro do reports.
obg :)
Responder
  • Informação
  • Quem está online

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