+1 voto
103 visitas
Exemplo:
Para consulta "SELECT A.NOME FUNCIONARIO FROM DO_FUNCIONARIOS A WHERE @CRITERIOSELECAO"
Para texto de pesquisa "TESTE"
Esta montando: "SELECT A.FUNCIONARIO FROM (SELECT A.NOME FUNCIONARIO FROM DO_FUNCIONARIOS A WHERE A.FUNCIONARIO LIKE 'TESTE') A
Como não existe A.FUNCIONARIO, dá erro de SQL.
por (12 pontos) | 103 visitas

1 Resposta

0 votos
Melhor resposta

Parece que nesse caso você não precisa utilizar @CRITERIOSELECAO na consulta. Teste sem o parâmetro @CRITERIOSELECAO.

Ao executar uma consulta no banco, o WES sempre faz um view dinâmica ex:

select * from (sua_consulta)

Se você adiciona @CRITERIOSELECAO na sua consulta o where será adiciona dentro dos parênteses ex:

select * from (sua_consulta @CRITERIOSELECAO)

Se você não adicionar @CRITERIOSELECAO o criterio de seleção fica fora dos parênteses ex:

select * from (sua_consulta) where @CRITERIOSELECAO

Isso é um comportamento da ferramenta.

 

 

 

por
selecionada por
Temos uma situação que está ocorrendo o mesmo problema, só que nessa precisamos popular o criterio de seleção do widget pelo CodeBehind e então acessamos ele na consulta usando o @CRITERIOSELECAO. Esse caso que mostramos foi apenas um teste que fizemos para evidenciar o problema.

Existe um filtro no widget e sem a utilização do @CRITERIOSELECAO ele não funciona. O comportamento esperado da ferramenta é: 

select * from (sua_consulta where @CRITERIOSELECAO) where 'filtro_usuario_grid'

Entendemos que @CRITERIOSELECAO é o where informado no widget, já o filtro simples que o usuário informa deveria ser feito sobre o resultado do querySource já com critério de seleção.

Ao tirar o @CRITERIOSELECAO conforme o recomendado, obteve-se o erro abaixo:

"Falha ao converter o varchar valor 'Blumenau n' para o tipo de dados int."

Erro no Sql: 

SELECT A.FUNCIONARIO FUNCIONARIO,

       A.MATRICULA MATRICULA,
       A.NOME NOME,
       A.EMPRESA EMPRESA,
       A.UNIDADE UNIDADE,
       A.HIERARQUIA HIERARQUIA,
       A.TIPOSALDO TIPOSALDO,
       A.ESCALA ESCALA,
       A.MINUTOS MINUTOS
  FROM (SELECT A.FUNCIONARIO,
               B.MATRICULA,
               B.NOME,
               C.NOME EMPRESA,
               D.NOME UNIDADE,
               E.NOME HIERARQUIA,
               H.NOME TIPOSALDO,
               G.NOME ESCALA,
               A.MINUTOS
          FROM IND_BANCOHORASATUAL A
               JOIN DO_FUNCIONARIOS B ON A.FUNCIONARIO = B.HANDLE
               JOIN ADM_EMPRESAS C ON A.EMPRESA = C.HANDLE
               JOIN ADM_UNIDADES D ON A.UNIDADE = D.HANDLE
               JOIN ADM_HIERARQUIAS E ON A.HIERARQUIA = E.HANDLE
               JOIN PO_FUNCIONARIOS F ON F.FUNCIONARIO = B.HANDLE
               JOIN PO_ESCALAS G ON F.ESCALA = G.HANDLE
               JOIN PO_SALDOS H ON A.TIPOSALDO = H.HANDLE) A
 WHERE
       (
           (
               A.UNIDADE IN (912, 904, 903, 12, 933, 934, 915, 917, 919, 920)
           )
       ) 
Melhores Apr 2026
  1. CeceliaWysel

    5 Pontos

  2. VernonSchaw

    5 Pontos

  3. MargieOsterh

    5 Pontos

200 pontos
Melhores 2026 Apr 06 - 12
  1. danilo.pereira

    96 Pontos

  2. danilo.pereira

    96 Pontos

  3. danilo.pereira

    96 Pontos

  4. willian.metalsystem

    69 Pontos

  5. henrique.muller

    62 Pontos

  6. luciano.fronza

    61 Pontos

  7. luciano.fronza

    61 Pontos

  8. luciano.fronza

    61 Pontos

  9. diuari.molinari

    52 Pontos

  10. diuari.molinari

    51 Pontos

518 perguntas
567 respostas
389 comentários
772 usuários