Filtrando na pesquisa apenas a competência mês atual - 1

Dicas do Oracle Forms Builder - Blocos, Itens, LOV, Canvas, Triggers, comandos, PLL, d2kwutil, FMB, Alert, menus, etc
Responder
leo_analista
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 23 Mar 2016 9:45 am

Bom dia gente...

Estou com uma terrível dúvida.
Preciso filtrar na pesquisa que me mostra o setor escolhido, porem apenas a competência mês atual -1.
Como posso fazer isso?

Tenho uma lista de unidades(setores), e quando clico no setor aparece ao lado os indicadores desse setor, porem está aparecendo todas as competência, preciso apenas do mês passado, mês atual-1.

Segue código da lista (pesquisa)

Selecionar tudo

declare
	x varchar2(100);	
begin
x:= 'unidade like '|| chr(39) ||:sistema_agm_hevv.setor || '%' || chr(39);
set_block_property('sistema_agm_hevv',default_where,x);
execute_query();
end;
Alguém pode me ajudar?
Tem uma figura anexo para vocês conseguirem visualizar com mais facilidade.

Agradeço.
Anexos
Print do Sistema
Print do Sistema
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

leo_analisata,

teria que ficar mais ou menos assim:

Selecionar tudo

declare
   x varchar2(100);   
begin
 x:= 'unidade like '|| chr(39) ||:sistema_agm_hevv.setor || '%' || chr(39)||
      --
     ' and '||:parametro_data||' between '||trunc(:parametro_data,'month')||' and '||last_day(:parametro_data);
     --
 set_block_property('sistema_agm_hevv',default_where,x);
 execute_query();
end;
Incluir o parametro de data na clausula WHERE.
Só precisa ver a formação da comparação.

Ou ainda na clausula where nas propriedades do bloco mesmo
leo_analista
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 23 Mar 2016 9:45 am

Cara muito obrigado pela ajuda. Porem ainda não finalizei...kkkkk

Preferi colocar um '=', porem não estou conseguindo colocar mês atual - 1, já tentei de tudo...

Ex:

Selecionar tudo

= TO_DATE('01/'||TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM/YYYY'))

Selecionar tudo

declare
x varchar2(100); 
begin
x:= 'unidade like '|| chr(39) ||:sistema_agm_hevv.setor || '%' || chr(39)||
--
' and '||'competencia'||' = '||'''01/07/2016''';
------= TO_DATE('01/'||TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM/YYYY'))----esse não funciona, porque não????

set_block_property('sistema_agm_hevv',default_where,x);
execute_query();
end;
Valeu pela força!!!

Léo
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Beleza,

Qualquer problema avise.
leo_analista
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 23 Mar 2016 9:45 am

Então, como faço para colocar mês atual -1 no parâmetro?

Não consegui com isso:

Selecionar tudo

= TO_DATE('01/'||TO_CHAR(ADD_MONTHS(SYSDATE,-1),'MM/YYYY'))
Léo
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Bom dia,

Tente assim:

Selecionar tudo

declare
 x      varchar2(100); 
 v_data varchar2(50);
begin
  --
  v_data :=  'To_Date('||''''||to_char((add_months(trunc(sysdate,'month'),-1)),'dd/mm/yyyy')||''''||','||''''||'dd/mm/yyyy'||''''||')';
  --
  x:= 'unidade like '|| chr(39) ||:sistema_agm_hevv.setor || '%' || chr(39)||
  --
  ' and '||:sistema_agm_hevv.competencia||' = '||v_data;
  --
  set_block_property('sistema_agm_hevv',default_where,x);
  execute_query();
end;
spernega
Rank: DBA Pleno
Rank: DBA Pleno
Mensagens: 232
Registrado em: Ter, 19 Jun 2007 2:12 pm
Localização: São Paulo - SP

Leo,

Mais um comentário, normalmente eu crio este tipo de funcionalidade numa TRIGGER PRE-QUERY.
leo_analista
Rank: Programador Júnior
Rank: Programador Júnior
Mensagens: 24
Registrado em: Qua, 23 Mar 2016 9:45 am

Muito obrigado spernega, funcionou perfeitamente.
:D :D
Responder
  • Informação
  • Quem está online

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