Autor Tópico: Carregar aplicação após o filtro avançado  (Lida 379 vezes)

karlosrapanui

  • Iniciante
  • **
  • Mensagens: 83
    • Email
Carregar aplicação após o filtro avançado
« Online: Junho 28, 2016, 01:40:40 pm »
Tenho uma aplicação consulta com a seguinte sql
[anoAtual]  = date("Y");
[anoFiltro] = date("Y");

$sql = "SELECT MAX(ID), NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES_REFERENTE, DATA_PAGAMENTO,
                  case SUBSTRING(MES_REFERENTE,1,3)
                       when 'JAN' then 'JANEIRO'
                       when 'FEV' then 'FEVEREIRO'
                       when 'MAR' then 'MARÇO'
                       when 'ABR' then 'ABRIL'
                       when 'MAI' then 'MAIO'
                       when 'JUN' then 'JUNHO'
                       when 'JUL' then 'JULHO'
                       when 'AGO' then 'AGOSTO'
                       when 'SET' then 'SETEMBRO'
                       when 'OUT' then 'OUTUBRO'
                       when 'NOV' then 'NOVEMBRO'
                       when 'DEZ' then 'DEZEMBRO'
                  end as MES_EXTENSO
                  FROM transp_folha_pessoal
                  WHERE substring(MES_REFERENTE,5,4) = ".[anoAtual]."
                  GROUP BY NFUNCIONAL
               ORDER BY NOME";

             
// PEGA OS DADOS MAIS RECENTES DO ANO ATUAL
sc_lookup(rs, $sql);

// SE NAO TIVER, PEGA OS DADOS DO ANO ANTERIOR
if (empty({rs}))
{
   [anoAtual]  = [anoAtual] - 1;
   [anoFiltro] = [anoFiltro] - 1;
   
   sc_lookup(rs, $sql);
}

{NFUNCIONAL}     = {rs[0][1]};
{NOME}           = {rs[0][2]};
{CARGO}          = {rs[0][3]};
{FUNCAO}         = {rs[0][4]};
{PROVENTO}       = {rs[0][5]};
{MES_REFERENTE}  = {rs[0][6]};
{DATA_PAGAMENTO} = {rs[0][7]};
{MES_EXTENSO}    = {rs[0][8]};
[mesExtenso]     = {MES_EXTENSO}." / ".[anoAtual];

[titulo] = 'FOLHA SALARIAL - REFERÊNCIA - '.[mesExtenso];

Até aqui, PERFEITO.



Nessa aplicação tem um botão que abre um modal onde tem 2 combos dinamicos

COMBO anoPesquisa
SELECT SUBSTRING(MES_REFERENTE,5,4) FROM transp_folha_pessoal GROUP BY SUBSTRING(MES_REFERENTE,5,4) ORDER BY SUBSTRING(MES_REFERENTE,5,4) DESC

COMBO mesPesquisa
SELECT
case SUBSTRING(MES_REFERENTE,1,3)
when 'JAN' then "JANEIRO"
when 'FEV' then "FEVEREIRO"
when 'MAR' then "MARÇO"
when 'ABR' then "ABRIL"
when 'MAI' then "MAIO"
when 'JUN' then "JUNHO"
when 'JUL' then "JULHO"
when 'AGO' then "AGOSTO"
when 'SET' then "SETEMBRO"
when 'OUT' then "OUTUBRO"
when 'NOV' then "NOVEMBRO"
when 'DEZ' then "DEZEMBRO"
end as MES_EXTENSO

FROM transp_folha_pessoal
WHERE SUBSTRING(MES_REFERENTE,5,4) = '{anoPesquisa}'

GROUP BY SUBSTRING(MES_REFERENTE,1,3) ORDER BY DATA_PAGAMENTO DESC

O que eu quero fazer após escolher o anoPesquisa e o mesPesquisa retornar para a aplicação principal levando os 2 como filtro.

Eu fiz no evento onValidate do filtro a seguinte instrução

if ({anoPesquisa} != ''){
   sc_lookup(rs, "SELECT MAX(ID), NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES_REFERENTE, DATA_PAGAMENTO,
                  case SUBSTRING(MES_REFERENTE,1,3)
                       when 'JAN' then 'JANEIRO'
                       when 'FEV' then 'FEVEREIRO'
                       when 'MAR' then 'MARÇO'
                       when 'ABR' then 'ABRIL'
                       when 'MAI' then 'MAIO'
                       when 'JUN' then 'JUNHO'
                       when 'JUL' then 'JULHO'
                       when 'AGO' then 'AGOSTO'
                       when 'SET' then 'SETEMBRO'
                       when 'OUT' then 'OUTUBRO'
                       when 'NOV' then 'NOVEMBRO'
                       when 'DEZ' then 'DEZEMBRO'
                  end as MES_EXTENSO
              FROM transp_folha_pessoal
              WHERE substring(MES_REFERENTE,1,3) = '{mesPesquisa}'
              AND substring(MES_REFERENTE,5,4) = '{anoPesquisa}'
              GROUP BY NFUNCIONAL
              ORDER BY NOME");

   if (empty({rs}))
      {
     {NOME}           = {rs[0][2]};
     {CARGO}          = {rs[0][3]};
     {FUNCAO}         = {rs[0][4]};
     {PROVENTO}       = {rs[0][5]};
     {MES_REFERENTE}  = {rs[0][6]};
     {DATA_PAGAMENTO} = {rs[0][7]};
     {mes_extenso}    = {rs[0][8]};
     [mesExtenso]     = {mesPesquisa}." / ".{anoPesquisa};

     [titulo] = 'FOLHA SALARIAL - REFERÊNCIA - '.[mesExtenso];
   }
}


Mas ele alem de exibir na mesma página do filtro não filtra os dados.

Nunca tinha trabalhado com esse tipo de filtro, então, ta osso.

Valeu a quem puder ajudar

[]'s
Carlos

Jailton

  • Expert
  • *****
  • Mensagens: 2038
Re:Carregar aplicação após o filtro avançado
« Responder #1 Online: Junho 28, 2016, 03:08:29 pm »
É aconselhável neste caso, você criar uma aplicação controle, para cria os filtros você pode usar Eventos Ajax e blocos para controlar os dados que vai pegar.

Depois que tiver concluído a montagem do filtro no controle ai coloca um botão para chamar a consulta, e cria uma variável global de saída: [glo_Filtro], já com filtro
e usa ela no SQL (WHERE) da consulta desejada.

Aplicação de Controle:
https://www.youtube.com/watch?v=VfmDUJiwwt8
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.