我创建了一个SSRS报告,还创建了一个订阅以在电子邮件中附加报告。这工作得很好。
我必须在报表中传递报表日期参数才能捕获任何数据。对于该特定日期,如果有记录,则发送报告,否则不发送报告。
我尝试了数据驱动的订阅,并在编辑数据集中给出了以下查询,并将其作为 TO 电子邮件 ID 字段传递。
select 'aaa.bbb@xxx.com' EmailID
where 1<=(select count(1) records from dbo.table)
在参数字段中,我正在传递日期参数.
我关注了这个视频https://www.youtube.com/watch?v=TOdKNWVes5g
如果该指定日期有任何行,则它会发送到上面的电子邮件 ID,否则它不应该发送,因为没有检索到任何数据。无论如何,在这两种情况下都会与报告一起发送电子邮件。如果有数据,则报表有数据,否则报表为空。
如果没有该日期的数据,我根本不想发送报告。
我在这里缺少什么?任何帮助不胜感激!
在这里,您必须在数据驱动订阅的查询中进行更改
DECLARE @Date AS DATETIME = '2018-01-01'
select 'aaa.bbb@xxx.com' EmailID
where (select count(*) from dbo.table
WHERE [DateColumn] >= @Date) > 0
where 子句中的查询需要与绑定报表中使用的报表数据集相同。
并且您必须在订阅的ToEmail部分中使用此数据集值。
对于数据驱动的订阅数据集,您需要执行以下操作:
DECLARE @Date AS DATETIME = '2018-01-01'
if not exists(
select top 1 *
from dbo.table
WHERE [DateColumn] >= @Date)
raiserror ('Subscription need not run!',16,1)
else
select 'aaa.bbb@xxx.com' EmailID
from dbo.table
WHERE [DateColumn] >= @Date
这基本上所做的是,如果什么都没有并且您的订阅失败,则不返回任何数据..不会生成电子邮件..如果if条件通过,那么其他所有内容都将按您的计划运行。