我已经创建了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,否则不应发送,因为未检索到任何数据。 但是,在两种情况下都随报告一起发送电子邮件。如果有数据,则报告包含数据,否则报告为空。
如果该日期没有数据,我根本不希望发送报告。
我在这里想念什么? 任何帮助表示赞赏!
答案 0 :(得分:0)
在这里您必须在查询中更改数据驱动订阅
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部分中使用此数据集值。
答案 1 :(得分:0)
您需要针对数据驱动的订阅数据集执行以下操作:
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条件通过,那么其他所有内容都会按您的计划运行。