2

我有一份每小时检查新订单的报告。但是效果很好,我只想在至少有一个订单的情况下发送报告。如果报告为空 - 我根本不想发送报告。

为了扩展这一点,我只想在有新订单时发送报告。

想法?

4

2 回答 2

3

只需在您的 DDS 查询中添加一个条件即可检查订单时间。如果过去一小时内有任何订单,您的查询应该返回您的结果集,否则什么也不返回。

例如,在您的查询中添加以下逻辑

 DECLARE @HoursAgo int
 SELECT Top 1 @HoursAgo = DateDiff('hh',getdate(), OrderTime) 
 FROM Orders 
 ORDER BY OrderTime DESC  

在您的查询中添加以下子句

 WHERE @HoursAgo > 0

您可能还想添加额外的检查以确保订单来自当天。

于 2010-11-05T15:00:20.213 回答
-1

RDL 数据集有一个名为“noRows”的属性,如果数据集没有返回任何行,则可以显示自定义消息。它仍然会发送空报告,只是带有特殊消息。

如果您希望订阅不触发报告,那么我所知道的唯一方法是在您的存储过程中检查 select 语句的行数,如果行数为零则抛出错误。这不是一个优雅的方法,但它不会发送报告,因为错误发生在 T-SQL 端并且 SSRS 将无法呈现报告。

declare @rows int

select @rows = -1

<select statement here>

select @rows = @@rowcount

if ( @rows < 1 )
begin
    RAISERROR ('no rows returned', 11, 1 );
end
于 2010-11-05T17:31:26.393 回答