Autor Tópico: WHERE DINAMICO NO FILTRO.  (Lida 2847 vezes)

pauloper

  • Global Moderator
  • Avançado
  • *****
  • Mensagens: 373
WHERE DINAMICO NO FILTRO.
« Online: Setembro 26, 2008, 03:16:28 pm »
Ola Pessoal,
Preciso de uma dica.
Estou executando (adicionando clausura WHERE em tempo de execucao) numa consulta a Macro:

  sc_select_where(add) = "AND where b.idsetor = [glo_setor]";

Que filtra a consulta conforme o Setor liberado no Login. Ate aqui tudo OK.
Ele filtra corretamente os dados conforme a macro.
O problema é quando chamo o Filtro da Consulta, informo uma pesquisa por Nome,
por exemplo e quando clico para executar a consulta pelo Filtro retorna um erro:

ERROR: syntax error at or near "where" at chacacter 99
select ................. where a.nome like '%PAULO'where b.idetor = 11

ou seja, quando executo o Filtro ele informa mais uma clausula WHERE, dando o erro.

O correto seria:
select ................. where a.nome like '%PAULO' AND b.idetor = 11

ALGUEM TEM ALGUMA IDEIA DE COMO RESOLVER ????
Obrigado.

Paulo.
 

Rodrigo Lins

  • Global Moderator
  • Expert
  • *****
  • Mensagens: 504
    • Overalt I.T
Re: WHERE DINAMICO NO FILTRO.
« Responder #1 Online: Setembro 27, 2008, 12:08:47 pm »
Bom Dia,

Quando utiliza-se o filtro da aplicação e o "where dinâmico", tem que verificar se já existe um WHERE para no caso, não ser duplicado o mesmo, além do mais, o que foi colocado por você está errado não existe "AND where...". De qualquer maneira, existe uma variável que verifica se o SQL da aplicação possui um WHERE ou não.

Exemplo:

if (empty({sc_where_atual})){

     sc_select_where(add) = "where b.idsetor = [glo_setor]";

} else {

     sc_select_where(add) = "AND b.idsetor = [glo_setor]";

}

Coloque este código no evento onInit da sua consulta.

Espero ter ajudado.

Rodrigo Lins.

pauloper

  • Global Moderator
  • Avançado
  • *****
  • Mensagens: 373
Re: WHERE DINAMICO NO FILTRO.
« Responder #2 Online: Outubro 01, 2008, 08:58:00 am »
OK Rodrigo, ja tinha feito isso,mas mesmo assim nao funciona.
faça um teste; crie uma consulta, sem where e use a marcro,
voce vai ver que funciona na consulta, mas quando voce clica
para impressao, PDF, gerar grafica nao funciona.

Nao seria isso o Bug do SC ???

Paulo.