我们正在使用 SSRS 2008 R2。其中已创建用于通过电子邮件发送报告的订阅,但不想在没有数据时发送报告,因为我们的订阅将每小时运行一次。请问有人可以告诉我如何防止通过电子邮件发送空白报告或没有数据的报告吗?
我使用存储过程和数据驱动订阅实现了这一点。
我不知道这是否是“最佳实践”,但这对我有用,这才是我真正关心的。 我会尽力解释它。
首先,获取原始报表 SQL 查询的副本并删除 SELECT 子句中的所有字段名称。 添加一些内容来代替字段名称以获取记录计数,例如“COUNT()”。 您现在应该有一个包含“SELECT COUNT()”的查询,后跟原始 FROM 和 WHERE 子句等。您可以运行此修改后的查询,它应该为您提供原始查询的记录计数。
其次,使用原始报告 SQL 查询,将新修改的查询复制/粘贴为原始 WHERE 子句末尾的新过滤器,如下所示: 和 (1.0 / (...您修改后的查询...)) > 0.0
如果您的原始查询有数据,则记录计数(以及修改后的查询)将具有大于 1 的数字,计算结果将是一个分数,并且报告将运行。 但是,如果原始查询没有返回数据,结果将是被零除错误,并且报告将无法运行。