Jump to content
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×

Recommended Posts


  • Topic Count:  23
  • Topics Per Day:  0.01
  • Content Count:  59
  • Content Per Day:  0.04
  • Reputation:   7
  • Achievement Points:  482
  • Solved Content:  0
  • Days Won:  3
  • Status:  Offline
  • Device:  Windows

Posted

Bom dia.

Pessoal, estou fazendo uma consulta SQL e nela inclui um campo que deve ser incluído pelo usuário, porem nesse filtro de entrada ele permite utilizar apenas um único valor.

No meu exemplo eu preciso listar os códigos do projeto 540 e 542, porem quando coloco os 2 códigos o relatório aparece em branco, se eu colocar os códigos individuais a consulta retorna os dados.

No momento deixei o código para filtrar dessa forma:

AND MPRJ.CODPRJ LIKE '%' + :PROJETO + '%'

porem já tentei com o IN, =, LIKE e mesmo assim não consigo fazer o filtro que preciso.

Em anexo está o print com a tela de entrada.

Como faço para que o sistema entenda que deve filtrar os 2 projetos (ou mais) conforme a necessidade do usuário?

parametros.jpg


  • Topic Count:  5
  • Topics Per Day:  0.00
  • Content Count:  535
  • Content Per Day:  0.17
  • Reputation:   184
  • Achievement Points:  3,568
  • Solved Content:  0
  • Days Won:  77
  • Status:  Offline
  • Age:  37
  • Device:  Windows

Posted

@fernandolk_1992, boa noite!

Existem algumas formas de resolver essa questão... criando vários parâmetros de entrada, exemplo projeto 1, 2, 3 ...assim limitando a quantas forem criadas na query.

Porém, a maneira que "eu" utilizo (possível solução) é a seguinte, com SQLServer (Compatibility level < 130): 

Crio uma CTE para efetuar um split do parâmetro, essa função do split é do incrível Dirceu Resende Como quebrar um string em uma tabela de substrings utilizando um delimitador no SQL Server - Dirceu Resende, depois envolvo a query em uma CTE e utilizo um JOIN para continuar a query.

Conforme imagem:

image.png

Texto da query 

Essa é uma das formas, porém , existem formar mais fácies, por exemplo a utilização da função nativa  STRING_SPLIT STRING_SPLIT (Transact-SQL) - SQL Server | Microsoft Docs, contudo o nível de compatibilidade do banco deve ser maior que (130).

Olha que simples...

image.png

Porém a aplicação não aceita ainda o "Compatibility level" acima de 120...

Espero ajudar.

Abraços.

 

TEXTO_QUERY.sql

  • Like 1

  • Topic Count:  946
  • Topics Per Day:  0.13
  • Content Count:  9,194
  • Content Per Day:  1.25
  • Reputation:   460
  • Achievement Points:  109,833
  • Solved Content:  0
  • Days Won:  267
  • Status:  Offline
  • Age:  54
  • Device:  Windows

Posted

Fera!!!! Muito bom. Será de grande valia esse post aqui, com certeza. 

 

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now

×
×
  • Create New...

Important Information

By using this site, you agree to our Terms of Use.