Autor Tópico: Nova sql não executa  (Lida 362 vezes)

karlosrapanui

  • Iniciante
  • **
  • Mensagens: 83
    • Email
Nova sql não executa
« Online: Junho 29, 2016, 01:19:11 pm »
Bom dia

Em uma aplicação consulta eu fiz a seguinte sql
SELECT
NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA FROM transp_folha_pessoal
WHERE ATIVA = 'S'
GROUP BY NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA ORDER BY NOME


Criei no FILTRO AVANÇADO 2 campos

anoPesquisa - SQL -
SELECT ANO
FROM transp_folha_pessoal
GROUP BY ANO
ORDER BY ANO DESC

Nesse campo eu liguei o evento Ajax ao campo mesPesquisa para atualizar

mesPesquisa - SQL
SELECT MES FROM transp_folha_pessoal
WHERE ANO = '{anoPesquisa}'
GROUP BY MES ORDER BY MES_SEQUENCIA DESC


Até ai tudo bem, porem após eu escolher os valores no filtro e mandar Pesquisar, ele retorna os dados que estavam antes do filtro, ou seja, não segue o filtro.

No evento onFilterValidate eu estou fazendo assim
//$sql = '';
//[anoPesquisa] = '2015';
//[mesPesquisa] = 'DEZEMBRO';

$sql = "SELECT
        NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA
        FROM transp_folha_pessoal ";


// SE O ANO DA PESQUISA NÃO FOR EM BRANCO, PEGA O ANO E MÊS INFORMADO NA APLICAÇÃO CONTROLE
if ('{anoPesquisa}' != ''){
   $sql = $sql . "WHERE ANO = '{anoPesquisa}' AND MES = '{mesPesquisa}' ";
}else{
   $sql = $sql . "WHERE ATIVA = 'S' ";
}

sc_lookup(rs, $sql . "GROUP BY NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA ORDER BY NOME");

if (!empty({rs})){
   [titulo] = 'FOLHA SALARIAL - REFERÊNCIA - '.{rs[0][5]}." / ".{rs[0][7]};
}

Alguem tem uma ideia do que possa estar ocorrendo ?

Valeu a quem puder ajudar.
« Última modificação: Junho 29, 2016, 02:07:52 pm por karlosrapanui »

Jailton

  • Expert
  • *****
  • Mensagens: 2030
Re:Nova sql não executa
« Responder #1 Online: Junho 29, 2016, 02:49:35 pm »
Você tem que guardar no final do onFilterValidate

Esse $sql gerado em uma global.

[glo_Filtro]=$sql;  // Marca ela somo Variável Saída.

Depois entra no SQL da consulta:
SQL > Configuração do SQL:

Coloca o comando WHERE no SQL:  WHERE [glo_Filtro]

Ai pode executar a consulta que você vai ver que ele vai pegar o filtro que você montou.

SELECT
NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA FROM transp_folha_pessoal
WHERE ATIVA = 'S' AND [glo_Filtro]
GROUP BY NFUNCIONAL, NOME, CARGO, FUNCAO, PROVENTO, MES, MES_SEQUENCIA, ANO, ATIVA ORDER BY NOME


« Última modificação: Junho 29, 2016, 02:52:11 pm por Jailton »
O Princípio da Vibração. "Nada está parado, tudo se move, tudo vibra". Caibalion.