SQL Server Reporting Services 2005-如何处理空报告
时间:2020-03-06 14:59:03 来源:igfitidea点击:
我想知道是否可以不添加Excel工作表(如果为空),并且是否可以在电子邮件中写不同的注释(如果为空)。
当我报告举报选项时,没有这样的配置。
编辑:我正在运行SQL Server报表服务2005.
一些可能的解决方法,如下所述:
MSDN:Reporting Services扩展
NoRows和NoRowsMessage属性
我应该调查这些事情。
解决方案
我相信答案是否定的,至少不是开箱即用的。考虑到RS中包含的打印交付扩展示例,编写我们自己的交付扩展应该不难。
是的,我认为那是不可能的。我们可以使用表的" NoRows"属性在不返回任何数据时显示一条消息,但这不会阻止报表的添加。但是至少当他们打开excel文件时,它可以打印出自定义消息,而不是一个空文档。
我已经成功地使用了数据驱动订阅和包含我的订阅者的表,数据驱动订阅查询如下所示:
SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT)
在传递设置中,收件人是包含我的电子邮件地址的数据列。
如果内部查询不返回任何行,则不会发送电子邮件。
为了目的,我们可以利用"包含报告"和"评论"传递设置。
我想像这样的数据驱动订阅查询将为我们工作:
SELECT '[email protected]; [email protected]' AS RECIPIENTS, CASE WHEN EXISTS (REPORT_QUERY) THEN 'TRUE' ELSE 'FALSE' END AS INCLUDE_REPORT, CASE WHEN EXISTS (REPORT_QUERY) THEN 'The report is attached' ELSE 'There was no data in this report' END AS COMMENT
然后,在配置订阅的传递设置时,在适当的字段中使用这些列。
在其他地方找到这个...
对于这个问题,我有一个明确的解决方案,唯一的缺点是系统管理员必须创建和维护计划。请尝试以下步骤:
- 使用所有必需的收件人为报告创建订阅。
- 将订阅设置为在昨天的一天每周运行一次(即,如果今天是星期二,则选择星期一),并且时间表从今天的日期开始,到今天的日期停止。本质上,此计划永远不会执行。
- 在SQL Management Studio中打开新创建的作业,转到步骤并复制SQL行(它看起来像这样:EXEC ReportServer.dbo.AddEvent @ EventType ='TimedSubscription',@ EventData ='1c2d9808-aa22-4597 -6191-f152d7503fff')
- 使用实际时间表在SQL中创建我们自己的作业,并使用类似以下内容:
如果存在(选择测试标准...)
开始
EXEC ReportServer.dbo.AddEvent @EventType = ...等
结尾