Ir para conteúdo

Parametro entrada com mais de um valor


fernandolk_1992

Posts Recomendados


  • Tópicos Que Criei:  13
  • Tópicos/Dia:  0.02
  • Meu Conteúdo:  35
  • Conteúdo/Dia:  0.04
  • Reputação:   5
  • Pontos/Conquistas:  307
  • Conteúdo Resolvido:  0
  • Dias Ganho:  3
  • Status:  Offline
  • Dispositivo:  Windows

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

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  468
  • Conteúdo/Dia:  0.21
  • Reputação:   129
  • Pontos/Conquistas:  3.124
  • Conteúdo Resolvido:  0
  • Dias Ganho:  62
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Windows

@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
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  879
  • Tópicos/Dia:  0.13
  • Meu Conteúdo:  8.780
  • Conteúdo/Dia:  1.34
  • Reputação:   287
  • Pontos/Conquistas:  106.114
  • Conteúdo Resolvido:  0
  • Dias Ganho:  184
  • Status:  Offline
  • Idade:  51
  • Dispositivo:  Windows

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

 

Link para comentar
Compartilhar em outros sites

Participe da conversa

Você pode postar agora, e se registrar mais tarde. Se você tiver uma conta, faça o login agora para postar com sua conta.

Visitante
Responder esse tópico

×   Você colou conteúdo com formatação.   Remover formatação

  Only 75 emoji are allowed.

×   Seu link foi automaticamente inserido no corpo do post.   Exibir como um link

×   Seu conteúdo anterior foi restaurado.   Limpar conteúdo do editor

×   You cannot paste images directly. Upload or insert images from URL.

×
×
  • Criar Novo...

Informação Importante

Usando este site, você concorda com nossos Termos de Uso e nossa Política de Privacidade.