如果表格中没有指定报告日期的数据,则不发送报告

时间:2019-03-27 13:39:33

标签: reporting-services ssrs-2012

我已经创建了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,否则不应发送,因为未检索到任何数据。 但是,在两种情况下都随报告一起发送电子邮件。如果有数据,则报告包含数据,否则报告为空。

如果该日期没有数据,我根本不希望发送报告。

我在这里想念什么? 任何帮助表示赞赏!

2 个答案:

答案 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条件通过,那么其他所有内容都会按您的计划运行。