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



我创建了一个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条件通过,那么其他所有内容都将按您的计划运行。

最新更新