当报告中没有数据时,SSRS 不会发送电子邮件

问题描述 投票:0回答:3

我们正在使用 SSRS 2008 R2。其中已创建用于通过电子邮件发送报告的订阅,但不想在没有数据时发送报告,因为我们的订阅将每小时运行一次。请问有人可以告诉我如何防止通过电子邮件发送空白报告或没有数据的报告吗?

sql reporting-services ssrs-2008
3个回答
3
投票

我使用存储过程和数据驱动订阅实现了这一点。

  1. 创建一个存储过程,它将返回所需的订阅信息(从地址、到地址、电子邮件正文等)
  2. 让存储过程检查查询中是否存在数据
  3. 当不存在数据时,使用“if”语句返回空白或虚拟电子邮件地址。
  4. 使用存储过程作为数据驱动订阅的源。

2
投票

如果您使用的是企业版,请查看数据驱动订阅。 (这也在开发者版中。)

如果您使用任何其他版本的 SQL Server,那么如果不编写 代码来操作订阅,这是不可能的。


0
投票

我不知道这是否是“最佳实践”,但这对我有用,这才是我真正关心的。 我会尽力解释它。

首先,获取原始报表 SQL 查询的副本并删除 SELECT 子句中的所有字段名称。 添加一些内容来代替字段名称以获取记录计数,例如“COUNT()”。 您现在应该有一个包含“SELECT COUNT()”的查询,后跟原始 FROM 和 WHERE 子句等。您可以运行此修改后的查询,它应该为您提供原始查询的记录计数。

其次,使用原始报告 SQL 查询,将新修改的查询复制/粘贴为原始 WHERE 子句末尾的新过滤器,如下所示: 和 (1.0 / (...您修改后的查询...)) > 0.0

如果您的原始查询有数据,则记录计数(以及修改后的查询)将具有大于 1 的数字,计算结果将是一个分数,并且报告将运行。 但是,如果原始查询没有返回数据,结果将是被零除错误,并且报告将无法运行。

© www.soinside.com 2019 - 2024. All rights reserved.