none
Parametro no Select RRS feed

  • Pergunta

  • Boa tarde a todos, prezados estou com a seguinte duvida, eu particulamente nunca vi, mas se tiver vai resolver meu problema, na sentença abaixo

    SELECT 
           
            T.CODTRF                                                         AS [CODIGO],
            T.DESCRICAO                                                      AS [NOME],
            (R.QUANTREAL)    AS 'QT REAL' ,
            MS.ESTOQUE
     
       

     FROM MPRJ  AS P
    LEFT JOIN  MTRF         AS T   ON T.CODCOLIGADA    = P.CODCOLIGADA  AND T.IDPRJ  = T.IDPRJ
    INNER JOIN  MCMP        AS MC  ON MC.CODCOLIGADA   = T.CODCOLIGADA  AND MC.IDPRJ = T.IDPRJ   AND MC.IDCMP     = T.IDCMP
    INNER JOIN MRECCMP      AS MR  ON MR.CODCOLIGADA   = MC.CODCOLIGADA AND MR.IDPRJ = MC.IDPRJ  AND MR.IDCMP     = MC.IDCMP
    LEFT JOIN MISM         AS I   ON I.CODCOLIGADA    = MR.CODCOLIGADA AND I.IDPRJ  = MR.IDPRJ  AND I.IDISM      = MR.IDISM
    LEFT JOIN  MTRFREAL     AS R   ON R.CODCOLIGADA    = T.CODCOLIGADA  AND R.IDPRJ  = T.IDPRJ   AND R.IDTRF      = T.IDTRF
    LEFT JOIN  MPERIODO     AS MD  ON MD.CODCOLIGADA   = R.CODCOLIGADA  AND MD.IDPRJ = R.IDPRJ   AND MD.IDPERIODO = R.NUMPERIODO
    LEFT JOIN  MISMCOMPL    AS MS  ON MS.CODCOLIGADA   = I.CODCOLIGADA  AND MS.IDPRJ = I.IDPRJ   AND MS.IDISM     = I.IDISM  

    WHERE  
         
            P.IDPRJ = '192'
            AND I.GRUPODNER = 'E'
            AND T.CAMPOLIVRE2 = 'SIM'
     
      AND P.CODCOLIGADA = '1'
            AND MD.DTINICIO >= '2010-01-01'  AND MD.DTFIM <= '2010-01-31'
     AND T.CODTRF IN ('001.04.01','001.04.02')
          
    GROUP BY P.CODCCUSTO,P.DESCRICAO,MD.DTINICIO,MD.DTFIM,T.CODTRF,T.DESCRICAO,T.CODUND,
    T.QUANTIDADE,T.VALORUNIT,R.QUANTREAL, T.IDPRJ,   T.IDTRF ,I.DESCISM, I.CODUND  ,        MS.ESTOQUE
    ORDER BY   T.CODTRF  

    Tenho o seguinte resultado

    Codigo      Nome                                                      QTd                Valor

    001.04.01 Fornecimento de CM-30                             16.5700          NULL
    001.04.02 Fornecimento de Emulsão RR-2C                51.2000          77.08

    Pois bem amigos, essa sentença, esta dentro de um relatorio, eu gostaria de se possivel a colocar um paramentro dentro dessa SQl, que toda vez que fosse executar essa relatorio fosse permitido eu colocar o paramentro de valor, na SQL.

    obrigado a todos pela ajuda.

     

    quarta-feira, 7 de abril de 2010 20:06

Respostas

  • Ronnie 

    Primeiro seu relatório foi desenvolvido em qual linguagem?

    Se possivel voce poderia colocar esta query em uma procedure e passar parametro na chamada da procedure.

    Exemplo:

    Create Procedure Valores_Param(@nVal Decimal(12,2)) as 
    Begin
    	SELECT  
    	        
    	        T.CODTRF                                                         AS [CODIGO],
    	        T.DESCRICAO                                                      AS [NOME],
    	        (R.QUANTREAL)    AS 'QT REAL' ,
    	        IsNull(MS.ESTOQUE,@nVal) as VALOR -- Creio eu que este seja o campo de valor
         
    		 FROM MPRJ  AS P 
    		LEFT JOIN  MTRF         AS T   ON T.CODCOLIGADA    = P.CODCOLIGADA  AND T.IDPRJ  = T.IDPRJ 
    		INNER JOIN  MCMP        AS MC  ON MC.CODCOLIGADA   = T.CODCOLIGADA  AND MC.IDPRJ = T.IDPRJ   AND MC.IDCMP     = T.IDCMP
    		INNER JOIN MRECCMP      AS MR  ON MR.CODCOLIGADA   = MC.CODCOLIGADA AND MR.IDPRJ = MC.IDPRJ  AND MR.IDCMP     = MC.IDCMP
    		LEFT JOIN MISM         AS I   ON I.CODCOLIGADA    = MR.CODCOLIGADA AND I.IDPRJ  = MR.IDPRJ  AND I.IDISM      = MR.IDISM
    		LEFT JOIN  MTRFREAL     AS R   ON R.CODCOLIGADA    = T.CODCOLIGADA  AND R.IDPRJ  = T.IDPRJ   AND R.IDTRF      = T.IDTRF 
    		LEFT JOIN  MPERIODO     AS MD  ON MD.CODCOLIGADA   = R.CODCOLIGADA  AND MD.IDPRJ = R.IDPRJ   AND MD.IDPERIODO = R.NUMPERIODO
    		LEFT JOIN  MISMCOMPL    AS MS  ON MS.CODCOLIGADA   = I.CODCOLIGADA  AND MS.IDPRJ = I.IDPRJ   AND MS.IDISM     = I.IDISM  
    	WHERE   
          
          		P.IDPRJ = '192'
    	        AND I.GRUPODNER = 'E'
    	        AND T.CAMPOLIVRE2 = 'SIM'
      
      		AND P.CODCOLIGADA = '1'
    		AND MD.DTINICIO >= '2010-01-01'  AND MD.DTFIM <= '2010-01-31'
    		AND T.CODTRF IN ('001.04.01','001.04.02')
           
    		GROUP BY P.CODCCUSTO,P.DESCRICAO,MD.DTINICIO,MD.DTFIM,T.CODTRF,T.DESCRICAO,T.CODUND,
    		T.QUANTIDADE,T.VALORUNIT,R.QUANTREAL, T.IDPRJ,   T.IDTRF ,I.DESCISM, I.CODUND  ,        MS.ESTOQUE
    		ORDER BY   T.CODTRF
    
    End
    
    Chamada da Funtion 
    
    Exec Valores_Param(19.99)
    
    O resultado obitido seria isto
    
    Codigo      Nome                                         QTd            Valor
    001.04.01 Fornecimento de CM-30                        16.5700          19.99
    001.04.02 Fornecimento de Emulsão RR-2C                51.2000          77.08

    Att,

    Fernando Willian de Souza Furtado 

    Espero ter ajudado.

     

    Se Útil favor classificar...

    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quarta-feira, 7 de abril de 2010 20:39
  • Ronnie,
    Bom dia!

    Tente colocar o valor entre apostrofo (aspas simples).

    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx


    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quinta-feira, 8 de abril de 2010 13:38
  • Se ao colocar apostrofo (aspas simples) não der certo faça a chamada da função alimentando a variavel exemplo:

    Exec Valores_Param @nVal = 19.99

    Espero ter ajudado

    Att,

     

    Fernando Willian de Souza Furtado

    Se útil Classifique....

    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quinta-feira, 8 de abril de 2010 16:01

Todas as Respostas

  • Ronnie

    se seu relatorio foi desenvolvido em Reporting Services ou Crystal reports vc pode passar parametros...

    att.
    Marcelo Fernandes


    MCP, MCDBA, MCSA, MCTS. Se útil, classifique!!!
    quarta-feira, 7 de abril de 2010 20:25
  • Ronnie 

    Primeiro seu relatório foi desenvolvido em qual linguagem?

    Se possivel voce poderia colocar esta query em uma procedure e passar parametro na chamada da procedure.

    Exemplo:

    Create Procedure Valores_Param(@nVal Decimal(12,2)) as 
    Begin
    	SELECT  
    	        
    	        T.CODTRF                                                         AS [CODIGO],
    	        T.DESCRICAO                                                      AS [NOME],
    	        (R.QUANTREAL)    AS 'QT REAL' ,
    	        IsNull(MS.ESTOQUE,@nVal) as VALOR -- Creio eu que este seja o campo de valor
         
    		 FROM MPRJ  AS P 
    		LEFT JOIN  MTRF         AS T   ON T.CODCOLIGADA    = P.CODCOLIGADA  AND T.IDPRJ  = T.IDPRJ 
    		INNER JOIN  MCMP        AS MC  ON MC.CODCOLIGADA   = T.CODCOLIGADA  AND MC.IDPRJ = T.IDPRJ   AND MC.IDCMP     = T.IDCMP
    		INNER JOIN MRECCMP      AS MR  ON MR.CODCOLIGADA   = MC.CODCOLIGADA AND MR.IDPRJ = MC.IDPRJ  AND MR.IDCMP     = MC.IDCMP
    		LEFT JOIN MISM         AS I   ON I.CODCOLIGADA    = MR.CODCOLIGADA AND I.IDPRJ  = MR.IDPRJ  AND I.IDISM      = MR.IDISM
    		LEFT JOIN  MTRFREAL     AS R   ON R.CODCOLIGADA    = T.CODCOLIGADA  AND R.IDPRJ  = T.IDPRJ   AND R.IDTRF      = T.IDTRF 
    		LEFT JOIN  MPERIODO     AS MD  ON MD.CODCOLIGADA   = R.CODCOLIGADA  AND MD.IDPRJ = R.IDPRJ   AND MD.IDPERIODO = R.NUMPERIODO
    		LEFT JOIN  MISMCOMPL    AS MS  ON MS.CODCOLIGADA   = I.CODCOLIGADA  AND MS.IDPRJ = I.IDPRJ   AND MS.IDISM     = I.IDISM  
    	WHERE   
          
          		P.IDPRJ = '192'
    	        AND I.GRUPODNER = 'E'
    	        AND T.CAMPOLIVRE2 = 'SIM'
      
      		AND P.CODCOLIGADA = '1'
    		AND MD.DTINICIO >= '2010-01-01'  AND MD.DTFIM <= '2010-01-31'
    		AND T.CODTRF IN ('001.04.01','001.04.02')
           
    		GROUP BY P.CODCCUSTO,P.DESCRICAO,MD.DTINICIO,MD.DTFIM,T.CODTRF,T.DESCRICAO,T.CODUND,
    		T.QUANTIDADE,T.VALORUNIT,R.QUANTREAL, T.IDPRJ,   T.IDTRF ,I.DESCISM, I.CODUND  ,        MS.ESTOQUE
    		ORDER BY   T.CODTRF
    
    End
    
    Chamada da Funtion 
    
    Exec Valores_Param(19.99)
    
    O resultado obitido seria isto
    
    Codigo      Nome                                         QTd            Valor
    001.04.01 Fornecimento de CM-30                        16.5700          19.99
    001.04.02 Fornecimento de Emulsão RR-2C                51.2000          77.08

    Att,

    Fernando Willian de Souza Furtado 

    Espero ter ajudado.

     

    Se Útil favor classificar...

    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quarta-feira, 7 de abril de 2010 20:39
  • Ronnie,
    Boa noite!

    Se não me engano o ERP que você está utilizando (que eu já trabalhei, como já lhe disse) não permite a criação de procedures, correto ou estou enganado? A idéia do Nando seria a mais usual, performática e mais simples de leitura. Você não consegue utilizar variáveis dentro desse Script e passar os parâmetros pelo RM Gerador de Relatórios?

    Aguardo seu retorno.

    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx


    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    quarta-feira, 7 de abril de 2010 23:13
  • Ola Gabriel, o gerador permite sim a utilização de procedure, passar o parametro dentro do gerador isso eu vou testar agora e ja retorno

    quinta-feira, 8 de abril de 2010 11:28
  • Nando vou simular a sua sugestão e ja te falo

    quinta-feira, 8 de abril de 2010 11:30
  • Ola Nando, simulando o procedure consegui rodar ela, porem quando eu fui executar a mesma me apresentou essa mensagem de erro.

    O que posso esta fazendo de errado.

    obrigado

    Msg 102, Level 15, State 1, Line 1
    Incorrect syntax near '19.99'.

    quinta-feira, 8 de abril de 2010 11:34
  • Ronnie,
    Bom dia!

    Tente colocar o valor entre apostrofo (aspas simples).

    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx


    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quinta-feira, 8 de abril de 2010 13:38
  • Se ao colocar apostrofo (aspas simples) não der certo faça a chamada da função alimentando a variavel exemplo:

    Exec Valores_Param @nVal = 19.99

    Espero ter ajudado

    Att,

     

    Fernando Willian de Souza Furtado

    Se útil Classifique....

    quinta-feira, 8 de abril de 2010 16:01
  • Se ao colocar apostrofo (aspas simples) não der certo faça a chamada da função alimentando a variavel exemplo:

    Exec Valores_Param @nVal = 19.99

    Espero ter ajudado

    Att,

     

    Fernando Willian de Souza Furtado

    Se útil Classifique....

    • Marcado como Resposta Ronnie Von terça-feira, 13 de abril de 2010 15:09
    quinta-feira, 8 de abril de 2010 16:01
  • Ronnie,
    Bom dia!

    E aí deu certo?

    Grande Abraço,
    Gabriel B Azevedo | Especializando em Engenharia de Software e Banco de Dados|
    gabriel.ccomputacao@hotmail.com
    http://gbabarroso.spaces.live.com/default.aspx


    Classifique as respostas. O seu feedback é imprescindível. Obrigado!
    segunda-feira, 12 de abril de 2010 13:07
  • Obrigado, Nando, Gabriel, Marcelo, Conseguimos resolver.

    Parabens a todos

    terça-feira, 13 de abril de 2010 15:09