Vamos ao meu problema. Criei uma tela no forms onde preencho alguns campos que chama um relatório no Reports.
- Depois de preencher os campos e clicar em ok o forms chama o relatório, passa os parametros e funciona normalmente.
- Essa semana precisei fazer uma alteração e criei um parametro Léxico. Quando passo os dados do parametro léxico com numero ele funciona normalmente.
vamos supor que o valor passado no parametro seja esse exemplo:
and cd_setor in (1,2,3)
até ai tudo bem, funciona de boa. mas quando eu tento passar no parametro um texto não funciona. eu clico no botão para chamar o relatório e nada acontece. nem erro aparece.
Ex: and setor in ('rh','compras')
Percebi que se eu tirar a aspas simples funciona de boa....segue meu código....
declare
ret number;
Print_Name Varchar2(100);
Port_name Varchar2(100);
vNumero varchar2(255) := '0';
p1_id paramlist;
WRK_WHERE VARCHAR2(1000) := 'AND LC.CD_LOCALIZACAO in ("''';
--WRK_WHERE VARCHAR2(255):= 'AND LC.CD_LOCALIZACAO in ('; --> esse funciona de boa
begin
p1_id := GET_PARAMETER_LIST('parm');
IF NOT ID_NULL(p1_id) THEN
DESTROY_PARAMETER_LIST(p1_id);
END IF;
p1_id := create_parameter_list('parm');
GO_BLOCK('BL_LOCALIZACAO');
FIRST_RECORD;
LOOP
WRK_WHERE := WRK_WHERE || :BL_LOCALIZACAO.CD_LOCALIZACAO || ''',''';
-- WRK_WHERE := WRK_WHERE || :BL_LOCALIZACAO.CD_LOCALIZACAO || ','; --> esse funciona de boa
LOOP
WRK_WHERE := WRK_WHERE || :BL_LOCALIZACAO.CD_LOCALIZACAO || ''',''';
IF :SYSTEM.LAST_RECORD = 'TRUE'
THEN EXIT;
ELSE NEXT_RECORD;
END IF;
END LOOP;
WRK_WHERE := WRK_WHERE || '0'')';
--WRK_WHERE := WRK_WHERE || '0)'; --> esse funciona de boa
IF :BL_LOCALIZACAO.CD_LOCALIZACAO = '%' THEN
WRK_WHERE := 'AND LC.CD_LOCALIZACAO LIKE ''%'' ';
END IF;
/******************************************************************/
if :SN_SALDO = 'S' THEN
vNumero := '-1';
end if ;
add_parameter(p1_id ,'P_CD_ESPECIE', text_parameter,:BL_PARAMETRO.cd_especie);
add_parameter(p1_id ,'P_CD_ESTOQUE', text_parameter,:BL_PARAMETRO.cd_estoque);
add_parameter(p1_id ,'P_DS_ESPECIE', text_parameter,:BL_PARAMETRO.ds_especie);
add_parameter(p1_id ,'P_DS_ESTOQUE', text_parameter,:BL_PARAMETRO.ds_estoque);
add_parameter(p1_id ,'P_AND' , text_parameter,WRK_WHERE);
add_parameter(p1_id ,'P_CONTAGEM' , text_parameter,:BL_PARAMETRO.contagem);
add_parameter(p1_id ,'P_SALDO' , text_parameter,vNumero);
ADD_PARAMETER (p1_id ,'PARAMFORM',TEXT_PARAMETER,'no');
add_parameter(p1_id ,'MAXIMIZE', text_parameter , 'YES');
run_product(reports,'E:\mv2000\mges\relatorio\r_contagem_fisica2_NEW.rep',synchronous,runtime,
filesystem,p1_id,null);
end;