Ir para conteúdo
Seja Membro VIP - Remova Banners de Propagandas, Tenha Liberado Qualquer Download, Além de Acessos em Áreas Exclusivas!! ×
Quer acesso a todas as Áreas do Fórum, até aquelas só para membros VIPs? Também quer poder baixar qualquer ARQUIVO? ×
AVISO AOS MEMBROS:

Fizemos uma atualização em 18/06/2023, e a forma de acesso ao Fórum mudou. Não mais está sendo aceito o login pelo Nome de Exibição cadastrado. Agora, apenas pelo email e pelos integradores de Login do Facebook, Google e Microsoft. O Facebook estava com uma validação pendente e já foi normalizado o acesso, já o Google, ainda estamos verificando o que está ocorrendo que não está funcionando.
Caso precisem de ajuda para o login pelo email acesse o link << Esqueci minha senha de acesso>> ou nos envie um pedido de ajuda pelo email admin@forumrm.com.br

Administração
ForumRM

Parametros com mais de um valor (mesmo tipo de dado)


Ir para a solução Resolvido por lucas.guimaraes,

Posts Recomendados


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.02
  • Reputação:   2
  • Pontos/Conquistas:  39
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Olá Pessoal, bom dia!

Estou utilizando parâmetros em um relatório cuja fonte de dados é uma consulta SQL própria/customizada.

O parâmetro TIPOCURSO precisa comportar mais de um dado caso o usuário queira e para isso a consulta SQL foi ajustada para essa filtragem usando a linha 'AND STIPOCURSO.CODTIPOCURSO IN (:TIPOCURSO)' no WHERE. 

Porém quando usuário usa esse parâmetro, só está retornando registros quando é informado apenas um valor (exemplo: 1) para TIPOCURSO, caso o usuário queira visualizar informações e mais de um TIPOCURSO (exemplo: 1,2) não é retornado nenhum registro.

Minha duvida é, se isso é possível fazer usando parâmetros e se estou fazendo da maneira correta

Anexei a mensagem uma imagem de como foi realizado esse processo

 

Atenciosamente, 

Lucas de Oliveira Guimarães.

IMAGEM_FORUM.png

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@lucas.guimaraes, boa noite!

Tudo certo ?

A pouco tempo conseguimos resolver essa questão!

 Caso não consigas fazer, por favor, coloque sua query no post que iremos lhe ajudar! 

 

Abraços

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.02
  • Reputação:   2
  • Pontos/Conquistas:  39
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Bom dia @luisgustavogomes !

Criei a função 'fncSplitTexto' porém, não consegui aplicar na consulta com sucesso me baseando no seu exemplo do post de 10/05/2022. O 'COMPATIBILITY_LEVEL' do meu banco 'CorporeRM' é 110 e acredito que isso é algo que não posso alterar.

Encaminho a consulta original anexada a mensagem sem usar a função.

Preciso aplicar a 'fncSplitTexto' em todos campos mencionados no WHERE que estão usando a clausula 'IN', isso seria possível?

Caso não tome muito seu tempo poderia me exemplificar o uso da função em apenas um dos campos da filtragem da minha consulta?

 

Atenciosamente,

Lucas de Oliveira Guimaraes

 

SQLQuery4.sql

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@lucas.guimaraes, boa tarde!

Sobre o collation vai depender da sua versão do SQLSERVER, sobre a consulta, fiz esse exemplo baseado na sua query! 

Basicamente, utilizo o split para formar tabelas e utilizo o join para filtrar! 

USE CORPORERM
GO 

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;

DECLARE @CODCOLIGADA INT = 0 
DECLARE @TIPOCURSO VARCHAR(MAX) = '1,2,4,5'
DECLARE @CURSO VARCHAR(MAX) = '6,90,100'

;WITH FILTRO_TIPOCURSO
AS
(
	SELECT 
		FS.ID, CONVERT(INT,FS.PALAVRA) AS 'TIPOCURSO'
	FROM [dbo].[fncSplitTexto](@TIPOCURSO, ',') FS

)
, FILTRO_CURSO
AS
(
	SELECT 
		FS.ID, CONVERT(INT,FS.PALAVRA) AS 'CURSO'
	FROM [dbo].[fncSplitTexto](@CURSO, ',') FS

)
SELECT DISTINCT
     SCURSO.CODCURSO
    ,SCURSO.NOME CURSO
    ,STIPOCURSO.CODTIPOCURSO
    ,STIPOCURSO.NOME TIPOCURSO
    ,YEAR(FLAN.DATAVENCIMENTO) ANO
    ,SCONTRATO.RA MATRICULA
    ,PPESSOA.NOME NOME
    ,SPARCELA.PARCELA PARCELA
    ,SPLETIVO.CODPERLET
    ,FLAN.VALORORIGINAL VALOR
    ,FLAN.DATAVENCIMENTO
FROM DBO.SCONTRATO 
JOIN DBO.SPARCELA ON (SCONTRATO.CODCOLIGADA = SPARCELA.CODCOLIGADA  AND SCONTRATO.RA = SPARCELA.RA AND SCONTRATO.IDPERLET = SPARCELA.IDPERLET AND SCONTRATO.CODCONTRATO = SPARCELA.CODCONTRATO)
JOIN DBO.SLAN ON (SCONTRATO.CODCOLIGADA = SLAN.CODCOLIGADA AND SPARCELA.IDPARCELA = SLAN.IDPARCELA)
JOIN DBO.FLAN ON (SCONTRATO.CODCOLIGADA = FLAN.CODCOLIGADA  AND SLAN.IDLAN = FLAN.IDLAN)
JOIN DBO.SALUNO ON (SCONTRATO.CODCOLIGADA = SALUNO.CODCOLIGADA  AND SCONTRATO.RA = SALUNO.RA)
JOIN DBO.PPESSOA ON (SALUNO.CODPESSOA = PPESSOA.CODIGO)
JOIN DBO.STIPOCURSO ON (SCONTRATO.CODCOLIGADA = STIPOCURSO.CODCOLIGADA  AND SCONTRATO.CODTIPOCURSO = STIPOCURSO.CODTIPOCURSO)
JOIN DBO.SHABILITACAOFILIAL ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA  AND SCONTRATO.IDHABILITACAOFILIAL = SHABILITACAOFILIAL.IDHABILITACAOFILIAL)
JOIN DBO.SCURSO ON (SCONTRATO.CODCOLIGADA = SCURSO.CODCOLIGADA  AND SHABILITACAOFILIAL.CODTIPOCURSO = SCURSO.CODTIPOCURSO AND SHABILITACAOFILIAL.CODCURSO = SCURSO.CODCURSO)
JOIN DBO.SPLETIVO ON (SCONTRATO.CODCOLIGADA = SPLETIVO.CODCOLIGADA AND SCONTRATO.IDPERLET = SPLETIVO.IDPERLET)
JOIN DBO.SHABILITACAOFILIALPL ON SCONTRATO.CODCOLIGADA = SHABILITACAOFILIALPL.CODCOLIGADA AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOFILIALPL.IDHABILITACAOFILIAL
JOIN DBO.SSERVICO ON (SCONTRATO.CODCOLIGADA = SSERVICO.CODCOLIGADA AND SPARCELA.CODSERVICO = SSERVICO.CODSERVICO)
JOIN DBO.SMATRICULA ON (SCONTRATO.CODCOLIGADA = SMATRICULA.CODCOLIGADA  AND SCONTRATO.RA = SMATRICULA.RA AND SCONTRATO.IDPERLET = SMATRICULA.IDPERLET AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICULA.IDHABILITACAOFILIAL)
JOIN DBO.SSTATUS ON (SMATRICULA.CODCOLIGADA = SSTATUS.CODCOLIGADA AND SMATRICULA.CODSTATUS = SSTATUS.CODSTATUS )
/*****/
JOIN FILTRO_TIPOCURSO ON (FILTRO_TIPOCURSO.TIPOCURSO = SCURSO.CODTIPOCURSO)
--AND SCURSO.CODTIPOCURSO IN (:TIPOCURSO)
JOIN FILTRO_CURSO ON (FILTRO_CURSO.CURSO  = SCURSO.CODCURSO)
--AND SCURSO.CODCURSO IN (:CODCURSO)
/*****/
WHERE SCONTRATO.CODCOLIGADA = IIF(@CODCOLIGADA = 0 , SCONTRATO.CODCOLIGADA , @CODCOLIGADA)
AND FLAN.STATUSLAN NOT IN (0,4) 
AND YEAR(FLAN.MESDECOMPETENCIA) = :COMPETENCIAANO
AND MONTH(FLAN.MESDECOMPETENCIA) = :COMPETENCIAMES
AND SSERVICO.CODSERVICO IN (1282)  (:CODSERVICO)
AND SSTATUS.CODSTATUS IN (14) (:CODSTATUS) 
ORDER BY STIPOCURSO.NOME, SCURSO.NOME, PPESSOA.NOME,SPARCELA.PARCELA

Espero lhe ajudar! 

 

Abraços

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.02
  • Reputação:   2
  • Pontos/Conquistas:  39
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Boa tarde @luisgustavogomes !

Ao executar a consulta direto no SQL Server funciona.

Após incorporar consulta no RM Reports através da tela de 'Editar Sentença' ocorrem alguns erros e o relatório não retorna nenhum registro (fornecendo os mesmos dados para os parâmetros definidos na consulta)

Você já se deparou com esses erros e mensagens?  Consegue me orientar?

1 - logo após clicar em Salvar

mensagemSalvarConsulta.jpg.7f101061b5b2ed6fd6a687239a751cd8.jpg

 

2- logo após fechar a primeira mensagem exibida

erroSalvarConsulta.thumb.jpg.634297501146f7f4aaf8ccc0f03b7931.jpg

 

3- após clicar em OK, da tela de Editar Sentença

erroAposClicarOkTelaEditarSentenca.jpg.aaf0bdd7056a56ce451f0b2ec4cc9c33.jpg

 

Consulta que está sendo usada...

 

/* faturamento - analitico */

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;

DECLARE @CODCOLIGADA INT = 0 
DECLARE @CODTIPOCURSO VARCHAR(500) = :CODTIPOCURSO
DECLARE @CODCURSO VARCHAR(500) = :CODCURSO

;WITH FILTRO_TIPOCURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'TIPOCURSO'
    FROM [dbo].[fncSplitTexto](@CODTIPOCURSO, ',') FS

)
, FILTRO_CURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'CURSO'
    FROM [dbo].[fncSplitTexto](@CODCURSO, ',') FS

)
SELECT DISTINCT
     SCURSO.CODCURSO
    ,SCURSO.NOME CURSO
    ,STIPOCURSO.CODTIPOCURSO
    ,STIPOCURSO.NOME TIPOCURSO
    ,YEAR(FLAN.DATAVENCIMENTO) ANO
    ,SCONTRATO.RA MATRICULA
    ,PPESSOA.NOME NOME
    ,SPARCELA.PARCELA PARCELA
    ,SPLETIVO.CODPERLET
    ,FLAN.VALORORIGINAL VALOR
    ,FLAN.DATAVENCIMENTO
FROM DBO.SCONTRATO (NOLOCK) 
JOIN DBO.SPARCELA (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SPARCELA.CODCOLIGADA  
                               AND SCONTRATO.RA = SPARCELA.RA 
                                 AND SCONTRATO.IDPERLET = SPARCELA.IDPERLET 
                               AND SCONTRATO.CODCONTRATO = SPARCELA.CODCONTRATO)
JOIN DBO.SLAN (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SLAN.CODCOLIGADA 
                           AND SPARCELA.IDPARCELA = SLAN.IDPARCELA)
JOIN DBO.FLAN (NOLOCK) ON (SCONTRATO.CODCOLIGADA = FLAN.CODCOLIGADA 
                           AND SLAN.IDLAN = FLAN.IDLAN)
JOIN DBO.SALUNO (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SALUNO.CODCOLIGADA 
                             AND SCONTRATO.RA = SALUNO.RA)
JOIN DBO.PPESSOA (NOLOCK) ON (SALUNO.CODPESSOA = PPESSOA.CODIGO)
JOIN DBO.STIPOCURSO (NOLOCK) ON (SCONTRATO.CODCOLIGADA = STIPOCURSO.CODCOLIGADA  
                                 AND SCONTRATO.CODTIPOCURSO = STIPOCURSO.CODTIPOCURSO)
JOIN DBO.SHABILITACAOFILIAL (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA  
                                         AND SCONTRATO.IDHABILITACAOFILIAL = SHABILITACAOFILIAL.IDHABILITACAOFILIAL)
JOIN DBO.SCURSO (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SCURSO.CODCOLIGADA  
                             AND SHABILITACAOFILIAL.CODTIPOCURSO = SCURSO.CODTIPOCURSO 
                             AND SHABILITACAOFILIAL.CODCURSO = SCURSO.CODCURSO)
JOIN DBO.SPLETIVO (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SPLETIVO.CODCOLIGADA 
                               AND SCONTRATO.IDPERLET = SPLETIVO.IDPERLET)
JOIN DBO.SHABILITACAOFILIALPL (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIALPL.CODCOLIGADA 
                                           AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOFILIALPL.IDHABILITACAOFILIAL)
JOIN DBO.SSERVICO (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SSERVICO.CODCOLIGADA 
                               AND SPARCELA.CODSERVICO = SSERVICO.CODSERVICO)
JOIN DBO.SMATRICULA (NOLOCK) ON (SCONTRATO.CODCOLIGADA = SMATRICULA.CODCOLIGADA  
                                 AND SCONTRATO.RA = SMATRICULA.RA 
                                 AND SCONTRATO.IDPERLET = SMATRICULA.IDPERLET 
                                 AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICULA.IDHABILITACAOFILIAL)
JOIN DBO.SSTATUS (NOLOCK) ON (SMATRICULA.CODCOLIGADA = SSTATUS.CODCOLIGADA 
                              AND SMATRICULA.CODSTATUS = SSTATUS.CODSTATUS )
JOIN FILTRO_TIPOCURSO (NOLOCK) ON (FILTRO_TIPOCURSO.TIPOCURSO = SCURSO.CODTIPOCURSO)
JOIN FILTRO_CURSO (NOLOCK) ON (FILTRO_CURSO.CURSO  = SCURSO.CODCURSO)

 WHERE FLAN.STATUSLAN NOT IN (0,4) 
 /*AND year(FLAN.DATAVENCIMENTO) >= 2016*/ 
 AND YEAR(FLAN.MESDECOMPETENCIA) = 2023 /*:COMPETENCIAANO*/
 AND MONTH(FLAN.MESDECOMPETENCIA) = 4 /*:COMPETENCIAMES*/
 AND SSERVICO.CODSERVICO IN (1282) /*(:CODSERVICO)*/
 AND SSTATUS.CODSTATUS IN (14) /*(:CODSTATUS)*/
 
ORDER BY STIPOCURSO.NOME, SCURSO.NOME, PPESSOA.NOME,SPARCELA.PARCELA

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

Opa, 

Só cópia e cola... não usa o NOLOCK, pois o SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED é o nolock na session! 

/* faturamento - analitico */

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;

DECLARE @CODCOLIGADA INT = 0 
DECLARE @CODTIPOCURSO VARCHAR(500) = :CODTIPOCURSO
DECLARE @CODCURSO VARCHAR(500) = :CODCURSO

;WITH FILTRO_TIPOCURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'TIPOCURSO'
    FROM [dbo].[fncSplitTexto](@CODTIPOCURSO, ',') FS

)
, FILTRO_CURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'CURSO'
    FROM [dbo].[fncSplitTexto](@CODCURSO, ',') FS

)
SELECT DISTINCT
     SCURSO.CODCURSO
    ,SCURSO.NOME CURSO
    ,STIPOCURSO.CODTIPOCURSO
    ,STIPOCURSO.NOME TIPOCURSO
    ,YEAR(FLAN.DATAVENCIMENTO) ANO
    ,SCONTRATO.RA MATRICULA
    ,PPESSOA.NOME NOME
    ,SPARCELA.PARCELA PARCELA
    ,SPLETIVO.CODPERLET
    ,FLAN.VALORORIGINAL VALOR
    ,FLAN.DATAVENCIMENTO
FROM DBO.SCONTRATO  
JOIN DBO.SPARCELA  ON (SCONTRATO.CODCOLIGADA = SPARCELA.CODCOLIGADA  
                               AND SCONTRATO.RA = SPARCELA.RA 
                                 AND SCONTRATO.IDPERLET = SPARCELA.IDPERLET 
                               AND SCONTRATO.CODCONTRATO = SPARCELA.CODCONTRATO)
JOIN DBO.SLAN  ON (SCONTRATO.CODCOLIGADA = SLAN.CODCOLIGADA 
                           AND SPARCELA.IDPARCELA = SLAN.IDPARCELA)
JOIN DBO.FLAN  ON (SCONTRATO.CODCOLIGADA = FLAN.CODCOLIGADA 
                           AND SLAN.IDLAN = FLAN.IDLAN)
JOIN DBO.SALUNO  ON (SCONTRATO.CODCOLIGADA = SALUNO.CODCOLIGADA 
                             AND SCONTRATO.RA = SALUNO.RA)
JOIN DBO.PPESSOA  ON (SALUNO.CODPESSOA = PPESSOA.CODIGO)
JOIN DBO.STIPOCURSO  ON (SCONTRATO.CODCOLIGADA = STIPOCURSO.CODCOLIGADA  
                                 AND SCONTRATO.CODTIPOCURSO = STIPOCURSO.CODTIPOCURSO)
JOIN DBO.SHABILITACAOFILIAL  ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA  
                                         AND SCONTRATO.IDHABILITACAOFILIAL = SHABILITACAOFILIAL.IDHABILITACAOFILIAL)
JOIN DBO.SCURSO  ON (SCONTRATO.CODCOLIGADA = SCURSO.CODCOLIGADA  
                             AND SHABILITACAOFILIAL.CODTIPOCURSO = SCURSO.CODTIPOCURSO 
                             AND SHABILITACAOFILIAL.CODCURSO = SCURSO.CODCURSO)
JOIN DBO.SPLETIVO  ON (SCONTRATO.CODCOLIGADA = SPLETIVO.CODCOLIGADA 
                               AND SCONTRATO.IDPERLET = SPLETIVO.IDPERLET)
JOIN DBO.SHABILITACAOFILIALPL  ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIALPL.CODCOLIGADA 
                                           AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOFILIALPL.IDHABILITACAOFILIAL)
JOIN DBO.SSERVICO  ON (SCONTRATO.CODCOLIGADA = SSERVICO.CODCOLIGADA 
                               AND SPARCELA.CODSERVICO = SSERVICO.CODSERVICO)
JOIN DBO.SMATRICULA  ON (SCONTRATO.CODCOLIGADA = SMATRICULA.CODCOLIGADA  
                                 AND SCONTRATO.RA = SMATRICULA.RA 
                                 AND SCONTRATO.IDPERLET = SMATRICULA.IDPERLET 
                                 AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICULA.IDHABILITACAOFILIAL)
JOIN DBO.SSTATUS  ON (SMATRICULA.CODCOLIGADA = SSTATUS.CODCOLIGADA 
                              AND SMATRICULA.CODSTATUS = SSTATUS.CODSTATUS )
JOIN FILTRO_TIPOCURSO ON (FILTRO_TIPOCURSO.TIPOCURSO = SCURSO.CODTIPOCURSO)
JOIN FILTRO_CURSO ON (FILTRO_CURSO.CURSO  = SCURSO.CODCURSO)

 WHERE FLAN.STATUSLAN NOT IN (0,4) 
 /*AND year(FLAN.DATAVENCIMENTO) >= 2016*/ 
 AND YEAR(FLAN.MESDECOMPETENCIA) = 2023 /*:COMPETENCIAANO*/
 AND MONTH(FLAN.MESDECOMPETENCIA) = 4 /*:COMPETENCIAMES*/
 AND SSERVICO.CODSERVICO IN (1282) /*(:CODSERVICO)*/
 AND SSTATUS.CODSTATUS IN (14) /*(:CODSTATUS)*/
 
ORDER BY STIPOCURSO.NOME, SCURSO.NOME, PPESSOA.NOME,SPARCELA.PARCELA

Abraços

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.02
  • Reputação:   2
  • Pontos/Conquistas:  39
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Fiz como recomendou e, somente as mensagens referente ao 'NOLOCK' e o uso do 'DECLARE' foram exibidas.

Ao executar o relatório pelo RM Reports nenhum registro foi exibido. Tem alguma ideia do que ainda pode ser?

Segue imagens das configurações setadas nos parâmetros que estão usando (TIPOCURSO e CURSO, os demais 'setei' valores fixos no WHERE). Inclusive testei configurado ambos como Tipo = Numero(inteiro de 16 bits) e o resultado foi o mesmo.

parCodCurso.jpg.b21981eaee5e095e4e064b13ba3cbfe3.jpg

 

parCodTipoCurso.jpg.22cd96c6776c44ee4689cb0e38e7a8a5.jpg

 


/* faturamento - analitico */

SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED;
SET NOCOUNT ON;

DECLARE @CODCOLIGADA INT = 0 
DECLARE @CODTIPOCURSO VARCHAR(500) = '1' --:CODTIPOCURSO
DECLARE @CODCURSO VARCHAR(500) = '1,4' --:CODCURSO

;WITH FILTRO_TIPOCURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'TIPOCURSO'
    FROM [dbo].[fncSplitTexto](@CODTIPOCURSO, ',') FS

)
, FILTRO_CURSO
AS
(
    SELECT 
        FS.ID, CONVERT(INT,FS.PALAVRA) AS 'CURSO'
    FROM [dbo].[fncSplitTexto](@CODCURSO, ',') FS

)
SELECT DISTINCT
     SCURSO.CODCURSO
    ,SCURSO.NOME CURSO
    ,STIPOCURSO.CODTIPOCURSO
    ,STIPOCURSO.NOME TIPOCURSO
    ,YEAR(FLAN.DATAVENCIMENTO) ANO
    ,SCONTRATO.RA MATRICULA
    ,PPESSOA.NOME NOME
    ,SPARCELA.PARCELA PARCELA
    ,SPLETIVO.CODPERLET
    ,FLAN.VALORORIGINAL VALOR
    ,FLAN.DATAVENCIMENTO
FROM DBO.SCONTRATO  
JOIN DBO.SPARCELA  ON (SCONTRATO.CODCOLIGADA = SPARCELA.CODCOLIGADA  
                               AND SCONTRATO.RA = SPARCELA.RA 
                                 AND SCONTRATO.IDPERLET = SPARCELA.IDPERLET 
                               AND SCONTRATO.CODCONTRATO = SPARCELA.CODCONTRATO)
JOIN DBO.SLAN  ON (SCONTRATO.CODCOLIGADA = SLAN.CODCOLIGADA 
                           AND SPARCELA.IDPARCELA = SLAN.IDPARCELA)
JOIN DBO.FLAN  ON (SCONTRATO.CODCOLIGADA = FLAN.CODCOLIGADA 
                           AND SLAN.IDLAN = FLAN.IDLAN)
JOIN DBO.SALUNO  ON (SCONTRATO.CODCOLIGADA = SALUNO.CODCOLIGADA 
                             AND SCONTRATO.RA = SALUNO.RA)
JOIN DBO.PPESSOA  ON (SALUNO.CODPESSOA = PPESSOA.CODIGO)
JOIN DBO.STIPOCURSO  ON (SCONTRATO.CODCOLIGADA = STIPOCURSO.CODCOLIGADA  
                                 AND SCONTRATO.CODTIPOCURSO = STIPOCURSO.CODTIPOCURSO)
JOIN DBO.SHABILITACAOFILIAL  ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIAL.CODCOLIGADA  
                                         AND SCONTRATO.IDHABILITACAOFILIAL = SHABILITACAOFILIAL.IDHABILITACAOFILIAL)
JOIN DBO.SCURSO  ON (SCONTRATO.CODCOLIGADA = SCURSO.CODCOLIGADA  
                             AND SHABILITACAOFILIAL.CODTIPOCURSO = SCURSO.CODTIPOCURSO 
                             AND SHABILITACAOFILIAL.CODCURSO = SCURSO.CODCURSO)
JOIN DBO.SPLETIVO  ON (SCONTRATO.CODCOLIGADA = SPLETIVO.CODCOLIGADA 
                               AND SCONTRATO.IDPERLET = SPLETIVO.IDPERLET)
JOIN DBO.SHABILITACAOFILIALPL  ON (SCONTRATO.CODCOLIGADA = SHABILITACAOFILIALPL.CODCOLIGADA 
                                           AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SHABILITACAOFILIALPL.IDHABILITACAOFILIAL)
JOIN DBO.SSERVICO  ON (SCONTRATO.CODCOLIGADA = SSERVICO.CODCOLIGADA 
                               AND SPARCELA.CODSERVICO = SSERVICO.CODSERVICO)
JOIN DBO.SMATRICULA  ON (SCONTRATO.CODCOLIGADA = SMATRICULA.CODCOLIGADA  
                                 AND SCONTRATO.RA = SMATRICULA.RA 
                                 AND SCONTRATO.IDPERLET = SMATRICULA.IDPERLET 
                                 AND SHABILITACAOFILIAL.IDHABILITACAOFILIAL = SMATRICULA.IDHABILITACAOFILIAL)
JOIN DBO.SSTATUS  ON (SMATRICULA.CODCOLIGADA = SSTATUS.CODCOLIGADA 
                              AND SMATRICULA.CODSTATUS = SSTATUS.CODSTATUS )
JOIN FILTRO_TIPOCURSO ON (FILTRO_TIPOCURSO.TIPOCURSO = SCURSO.CODTIPOCURSO)
JOIN FILTRO_CURSO ON (FILTRO_CURSO.CURSO  = SCURSO.CODCURSO)

 WHERE FLAN.STATUSLAN NOT IN (0,4) 
 /*AND year(FLAN.DATAVENCIMENTO) >= 2016*/ 
 AND YEAR(FLAN.MESDECOMPETENCIA) = 2023 /*:COMPETENCIAANO*/
 AND MONTH(FLAN.MESDECOMPETENCIA) = 4 /*:COMPETENCIAMES*/
 AND SSERVICO.CODSERVICO IN (1282) /*(:CODSERVICO)*/
 AND SSTATUS.CODSTATUS IN (14) /*(:CODSTATUS)*/
 
ORDER BY STIPOCURSO.NOME, SCURSO.NOME, PPESSOA.NOME,SPARCELA.PARCELA

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

@lucas.guimaraes, bom dia!

Não temos uma base para testar seu relatório, portanto, caso queiras que eu lhe ajude, podemos realizar um remoto, meu contato no skype é luisgustavogomes@outlook.com 

Abraços

  • Gostei 1
Link para comentar
Compartilhar em outros sites

  • 2 semanas depois...
  • Solução

  • Tópicos Que Criei:  1
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  5
  • Conteúdo/Dia:  0.02
  • Reputação:   2
  • Pontos/Conquistas:  39
  • Conteúdo Resolvido:  0
  • Dias Ganho:  0
  • Status:  Offline
  • Idade:  44
  • Dispositivo:  Windows

Em 15/06/2023 at 09:56, luisgustavogomes disse:

@lucas.guimaraes, bom dia!

Não temos uma base para testar seu relatório, portanto, caso queiras que eu lhe ajude, podemos realizar um remoto, meu contato no skype é luisgustavogomes@outlook.com 

Abraços

Boa tarde @luisgustavogomes !

Consegui resolver meu problema com a seguinte linha na consulta...

AND REPLACE((',' + :TIPOCURSO + ','), ' ', '') LIKE ('%,' + CAST(SCURSO.CODTIPOCURSO AS VARCHAR)+ ',%') 

Com isso, consigo executar consultas SQL no RM Resports que usam parâmetros com múltiplos valores.

 

Atenciosamente,

Lucas Guimarães.

  • Gostei 1
  • Obrigado 1
Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  4
  • Tópicos/Dia:  0.01
  • Meu Conteúdo:  22
  • Conteúdo/Dia:  0.07
  • Reputação:   10
  • Pontos/Conquistas:  148
  • Conteúdo Resolvido:  0
  • Dias Ganho:  1
  • Status:  Offline
  • Idade:  32
  • Dispositivo:  Windows

Boa noite amigos,

Será que isso funcionária no Oracle também?

Fiquei curioso.

Link para comentar
Compartilhar em outros sites


  • Tópicos Que Criei:  5
  • Tópicos/Dia:  0.00
  • Meu Conteúdo:  485
  • Conteúdo/Dia:  0.21
  • Reputação:   136
  • Pontos/Conquistas:  3.231
  • Conteúdo Resolvido:  0
  • Dias Ganho:  64
  • Status:  Offline
  • Idade:  35
  • Dispositivo:  Android

Boa noite, 

 

Boa pergunta! Quem tiver Oracle, se tiver como, por favor! 

Pelo Sqlserver utilizamos uma CTE para fazer o split.

 

Abraços 

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.