fabio_consultor Postado 6 de Novembro de 2012 Tópicos Que Criei: 83 Tópicos/Dia: 0.01 Meu Conteúdo: 433 Conteúdo/Dia: 0.07 Reputação: 0 Pontos/Conquistas: 2.980 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Idade: 53 Denunciar Compartilhar Postado 6 de Novembro de 2012 prezados, preciso criar um filtro de visão de lançamentos, que se oriente a partir de um dado conjunto, nao continuo de informações. ex: Filtro: se codcfo IN ( SQL003) onde SQL003 seja : Select codcfo from fcfo where codtfc in ( :tipos_de_fornecedores) --------**---------------- o que ocorrerá, quando o filtro for executado, será solicitado o valor do parametro " tipos_de_fornecedores " e quero informar um conjunto de fornecedores, aleatorio, como por exemplo: 1,2,5,6 quando o faço, o sistema não compreende 1,2,5,6 como 4 valores a serem checados individualmente, mas sim como se fosse a string "1,2,5,6" que nao obviamente nao existe como código. o porque, é o exec que entende a string como o valor a alimentar a variavel local @tipos_de_fornecedores, criada em tempo de execução, pelo proprio código da aplicação... encontrei uma saida contorno, mas queria saber se não há mesmo como usar o in nessa situação. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Robinson Postado 6 de Novembro de 2012 Tópicos Que Criei: 58 Tópicos/Dia: 0.01 Meu Conteúdo: 672 Conteúdo/Dia: 0.11 Reputação: 25 Pontos/Conquistas: 4.005 Conteúdo Resolvido: 0 Dias Ganho: 18 Status: Offline Idade: 48 Denunciar Compartilhar Postado 6 de Novembro de 2012 Olá Fábio Eu tentei fazer isso e descobri que o uso de parâmetros em filtros ou gerador de relatórios não vão permitir vários valores para você utilizar dentro do "IN" de um SQL. Ex.: SELECT * FROM TMOV WHERE CODOCLIGADA = 1 AND STATUS IN ('F','Q','P') Não consegui passar 'F','Q','P' pelo parâmetro Essa vei ser uma do MacGyver mesmo Boa sorte Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
João Rodrigo Postado 28 de Novembro de 2012 Tópicos Que Criei: 6 Tópicos/Dia: 0.00 Meu Conteúdo: 290 Conteúdo/Dia: 0.06 Reputação: 17 Pontos/Conquistas: 1.523 Conteúdo Resolvido: 0 Dias Ganho: 12 Status: Offline Denunciar Compartilhar Postado 28 de Novembro de 2012 eu me deparei com este problema, e montei esta função que quebra os valores separados pela virgula: CREATE FUNCTION [dbo].[Z_SplitString] ( @sString nvarchar(2048) ) RETURNS @tParts TABLE ( part nvarchar(2048) ) --WITH ENCRYPTION AS BEGIN -- comment: sp_password DECLARE @cDelimiter nchar(1) SET @cDelimiter = ',' if @sString is null return declare @iStart int, @iPos int if substring( @sString, 1, 1 ) = @cDelimiter begin set @iStart = 2 insert into @tParts values( null ) end else set @iStart = 1 while 1=1 begin set @iPos = charindex( @cDelimiter, @sString, @iStart ) if @iPos = 0 set @iPos = len( @sString )+1 if @iPos - @iStart > 0 insert into @tParts values ( substring( @sString, @iStart, @iPos-@iStart )) else insert into @tParts values( null ) set @iStart = @iPos+1 if @iStart > len( @sString ) break end RETURN END GO para executar basta fazer assim: select * from tmov where codtmv in( SELECT part FROM Z_SplitString('1.2.06,1.2.09,1.2.13,1.2.15')) 1 Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Maicon Macedo Postado 4 de Novembro de 2019 Tópicos Que Criei: 0 Tópicos/Dia: 0 Meu Conteúdo: 1 Conteúdo/Dia: 0.00 Reputação: 0 Pontos/Conquistas: 8 Conteúdo Resolvido: 0 Dias Ganho: 0 Status: Offline Denunciar Compartilhar Postado 4 de Novembro de 2019 Olá. Que comando salvador. Muito Obrigado por compartilhar. Citar Link para comentar Compartilhar em outros sites Mais opções de compartilhamento...
Posts Recomendados
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.