SQL Server Reporting Services 2005 - 如何处理空报表

时间:2008-10-01 16:15:25

标签: sql reporting-services reporting report

我想知道如果它是空的,是否可以不附加Excel表格,如果空的话可能会在电子邮件中写一个不同的评论。

当我去报告投放选项时,没有这样的配置。

编辑:我正在运行SQL Server Reporting Services 2005。

如下所述的一些可能的解决方法:

MSDN: Reporting Services Extensions

NoRows and NoRowsMessage properties

我应该研究这些事情。

4 个答案:

答案 0 :(得分:1)

我相信答案是否定的,至少不是开箱即用的。考虑到RS中包含的打印传送扩展示例,编写自己的传送扩展名应该不难。

答案 1 :(得分:1)

是的,我不认为这是可能的。您可以使用表的“NoRows”属性在没有返回数据时显示消息,但这不会阻止附加报告。但至少当他们打开excel文件时,它可以打印出自定义消息而不是空文档。

答案 2 :(得分:1)

在其他地方找到了这个......

我对此问题有一个干净的解决方案,唯一的缺点是系统管理员必须创建和维护计划。请尝试以下步骤:

  1. 为包含所有必需收件人的报告创建订阅。

  2. 将订阅设置为在​​昨天的每周运行(即如果今天是星期二,请选择星期一),时间表从今天的日期开始,并在今天的日期停止。从本质上讲,这个时间表永远不会运行。

  3. 在SQL Management Studio中打开新创建的作业,转到步骤并复制SQL行(它看起来像这样:EXEC ReportServer.dbo.AddEvent @ EventType ='TimedSubscription',@ EventData = '1c2d9808-aa22-4597-6191-f152d7503fff')

  4. 使用实际计划在SQL中创建自己的作业,并使用类似:

  5. 如果存在(选择您的测试标准......)

    BEGIN

    EXEC ReportServer.dbo.AddEvent @EventType = ... etc。

    END

答案 3 :(得分:0)

我使用数据驱动订阅和包含我的订阅者的表取得了成功,数据驱动的订阅查询如下所示:

SELECT * FROM REPORT_SUBSCRIBERS WHERE EXISTS (SELECT QUERY_FROM_YOUR_REPORT)

在投放设置中,收件人是包含我的电子邮件地址的数据列 如果内部查询没有返回任何行,则不会发送任何电子邮件。


出于您的目的,您可以利用“包含报告”和“评论”投放设置 我想像这样的数据驱动订阅查询对你有用:

SELECT 'person1@domain.com; person2@domain.com' 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

在配置订阅的投放设置时,请在相应字段中使用这些列。