Usuário com melhor resposta
Relatorio em branco(sem dados da query) no disparo de email

Pergunta
-
Criei um reporting e disparo todos os dias pela manhã, porém nem sempre possui dados para serem encaminhados aos usuarios todos os dias, e o relatório está chegando em branco, então gostaria de um auxilio para evitar o disparo de email com os dados em branco, tipo que eu possa verificar antes se a query retorne pelo menos uma linha para ocorrer o disparo, caso contrario não dispare.
Pesquisei no foram e não consegui identificar nada semelhante, porém se alguém lembrar ou encontrar de algo é só mandar link que eu agradeço.
** Lembrando, o relatório está funcionando normalmente quando a query utilizada possui dados
Att rpssouza
Respostas
-
Cara, deve ter outro jeito de fazer, mas essa é a única que eu encontrei.
Primeiro acesse o BD onde está configurado o seu Reporting e execute a query abaixo:
SELECT rs.ScheduleID FROM ReportSchedule rs INNER JOIN Catalog c ON c.ItemID = rs.ReportID WHERE c.Name = 'SEU_RELATORIO'
onde está 'SEU_RELATORIO' coloque o nome do seu relatório, dessa forma, você conseguirá o ID dos JOBS de assinatura que foram criados no seu BD.
Feito isso, vá na parte de JOBS do SQL Server e localize o ID encontrado.
Edite o JOB e na aba "Steps" deverá existir um único passo para a chamada do seu relatório.
Edite esse passo que deve estar algo mais ou menos assim:
exec [ReportServer$SUAINSTANCIA].dbo.AddEvent @EventType='TimedSubscription', @EventData='e9f6b333-c01d-4cd8-8318-e8140078b780'
Adicione um IF Exists para validar o retorno de sua query e para a execução do relatório.
Ficaria mais ou menos assim:
IF EXISTS (SELECT 1 FROM SUA_TABELA WHERE <CONDICOES>) exec [ReportServer$SUAINSTANCIA].dbo.AddEvent @EventType='TimedSubscription', @EventData='e9f6b333-c01d-4cd8-8318-e8140078b780'
Não cheguei a testar, mas acredito que resolva o seu problema.
Obs: Pode ser que se você alterar alguma configuração da assinatura direto no portal do SSRS ele perca o seu ajuste, seria bom testar.
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta rpssouza quinta-feira, 11 de maio de 2017 11:58
-
Todas as Respostas
-
Cara, deve ter outro jeito de fazer, mas essa é a única que eu encontrei.
Primeiro acesse o BD onde está configurado o seu Reporting e execute a query abaixo:
SELECT rs.ScheduleID FROM ReportSchedule rs INNER JOIN Catalog c ON c.ItemID = rs.ReportID WHERE c.Name = 'SEU_RELATORIO'
onde está 'SEU_RELATORIO' coloque o nome do seu relatório, dessa forma, você conseguirá o ID dos JOBS de assinatura que foram criados no seu BD.
Feito isso, vá na parte de JOBS do SQL Server e localize o ID encontrado.
Edite o JOB e na aba "Steps" deverá existir um único passo para a chamada do seu relatório.
Edite esse passo que deve estar algo mais ou menos assim:
exec [ReportServer$SUAINSTANCIA].dbo.AddEvent @EventType='TimedSubscription', @EventData='e9f6b333-c01d-4cd8-8318-e8140078b780'
Adicione um IF Exists para validar o retorno de sua query e para a execução do relatório.
Ficaria mais ou menos assim:
IF EXISTS (SELECT 1 FROM SUA_TABELA WHERE <CONDICOES>) exec [ReportServer$SUAINSTANCIA].dbo.AddEvent @EventType='TimedSubscription', @EventData='e9f6b333-c01d-4cd8-8318-e8140078b780'
Não cheguei a testar, mas acredito que resolva o seu problema.
Obs: Pode ser que se você alterar alguma configuração da assinatura direto no portal do SSRS ele perca o seu ajuste, seria bom testar.
Abraço!
"A vida é um paraíso, mas os homens não o sabem e não se preocupam em sabê-lo." Fiodor Dostoievski
- Marcado como Resposta rpssouza quinta-feira, 11 de maio de 2017 11:58
-