5

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

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

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

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

MSDN:报告服务扩展

NoRows 和 NoRowsMessage 属性

我应该调查这些事情。

4

4 回答 4

1

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

于 2008-10-01T16:37:10.243 回答
1

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

于 2008-10-01T17:06:32.543 回答
1

在别的地方找到这个...

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

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

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

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

  4. 使用实际计划在 SQL 中创建自己的作业,并使用以下内容:

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

开始

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

结尾

于 2009-07-23T14:00:43.403 回答
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

然后在为订阅配置交付设置时使用相应字段中的这些列。

于 2008-10-20T14:25:19.340 回答